Array - Sockets - Clients

Ali Çehreli acehreli at yahoo.com
Fri Dec 13 16:36:29 PST 2013


On 12/13/2013 04:11 PM, Irving Montalvo wrote:
> How do I pass a socket to concurrency?
>
> send(tid, cli); // Socket cli
> ----------------------
> receive (
> (Socket cli) {
>    cli.send("1234567890");
> }
> )
> -----
> Help me :)

Unfortunately, some cast(shared) is needed at this time:

import std.stdio;
import std.socket;
import std.concurrency;
import core.thread;

struct Done
{}

void main()
{
     shared(Socket)[ulong] clients;
     clients[10000] =
         cast(shared)new Socket(AddressFamily.UNIX, SocketType.STREAM);

     auto tid = spawn(&server);

     send(tid, clients[10000]);
     send(tid, Done());

     thread_joinAll();
}

void server()
{
     bool done = false;

     while (!done) {
         receive(
             (shared(Socket) client) {
                 writeln("received client");
             },

             (Done _) {
                 done = true;
             }
                 );
     }
}

Ali



More information about the Digitalmars-d-learn mailing list