Looking for command for synchronization of threads

Sparsh Mittal sparsh0mittal at gmail.com
Wed Jan 30 18:29:23 PST 2013


>
> I suggest looking at std.parallelism since it's designed for 
> this kind of thing.  That aside, all traditional 
> synchronization methods are in core.sync.  The equivalent of 
> "sync" in Cylk would be core.sync.barrier.

Thanks. I wrote this:

#!/usr/bin/env rdmd

import std.stdio;
import std.concurrency;
import std.algorithm;
import core.sync.barrier;
import core.thread;

void sorter(Tid owner, shared(int)[] sliceToSort, int mynumber)
{
     writefln("Came inside  %s", mynumber);
     sort(sliceToSort);
     writefln("Going out of %s", mynumber);

}

void main()
{
     shared numbers = [ 6, 5, 4, 3, 2, 1 ];
     auto barrier = new Barrier(2);
     spawn(&sorter, thisTid, numbers[0 .. $ / 2],  0);
     spawn(&sorter, thisTid, numbers[$ / 2 .. $],1 );

     writefln("Waiting for barrier in main");
     barrier.wait();

     writeln(numbers);
}

It compiles but barrier does not get released. Can you please 
point out the fault. Pardon my mistake. I searched whole web, 
there are almost no examples of it online.


I saw this: 
http://www.digitalmars.com/d/archives/digitalmars/D/bugs/Issue_9005_New_std.concurrency.spawn_should_allow_void_delegate_Args_shared_for_new_Tid_44426.html

but it does not compile.


More information about the Digitalmars-d-learn mailing list