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