Am 07.05.2014 17:28, schrieb Bienlein:

Hello Sönke,

would it be possible in vibe.d to spawn a task the usual actor-style way
as it is done with kernel threads in D? What I mean is this:

void spawnedFunc(Tid tid)
{
    receive(
      (int i) { writeln("Received the number ", i);}
    );

}

auto tid = spawn(&spawnedFunc, thisTid);


Thanks, Bienlein

The Tid handling is currently a little different, but apart from that it should work like this:

        import vibe.core.core;
        import vibe.core.concurrency;

        void spawnedFunc(Tid tid)
        {
            receive(
              (int i) { writeln("Received the number ", i); }
            );
        }

        // run it as a fiber in the same thread
        // note: runTask only takes a delegate to make runTask({ ... })
        // work without an ambiguity error
        auto tid = runTask(toDelegate(&spawnedFunc), Task.getThis());

        // or run it in the thread pool instead
        runWorkerTask(&spawnedFunc, Task.getThis());

Having said that, I'll just add a "thisTid" property to vibe.core.concurrency to make that part API compatible. I'd also add a "spawn" alias, but the question is if that should point to runTask or rather to runWorkerTask.

Reply via email to