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?