On Thursday, 31 December 2015 at 02:26:23 UTC, Rikki Cattermole wrote:
On 31/12/15 3:22 PM, sanjayss wrote:
std.socket supports the socketpair() function, but it seems like this api is not really usable in any of the concurrency primitives supported
by D. So what is the purpose of the socketpair() support?

Basically I am trying to create two threads and am trying to use socketpair() to create two sockets and use them to communicate between
the threads, but none of the socket API's allow use of shared
socket-pair (probably correctly so). So how else can one implement a foreground event loop that supports both key-presses and network socket events -- I was hoping to do the keyboard event in one thread and use the socketpair to communicate to the actual foreground event loop via
the socketpair sockets.

Any help on how one would code this in D is welcome.

Wrong tool for the job.
You want message passing not sockets to communicate between threads in this case.

You're wanting the functions receive and send relating to:
http://dlang.org/phobos/std_concurrency.html

Sure -- I understand the concurrency primitives, but what I was trying to achieve was to have a single foreground loop that could select on a network socket while also watching for a keypress (and in C socketpair is one way you would achieve this using one thread to listen for keypresses -- see http://stackoverflow.com/questions/11461106/socketpair-in-c-unix). How do you suggest I achieve this in D?

Reply via email to