digitalmars.D.learn - multi thread sampl
- Zarathustra (1/1) Aug 07 2008 Where Can I find example of multi thread application in D?
- Wyverex (54/55) Aug 07 2008 Heres a simple in Tango
Where Can I find example of multi thread application in D?
Aug 07 2008
Zarathustra wrote:Where Can I find example of multi thread application in D?Heres a simple in Tango import tango.io.Stdout, tango.core.Thread, tango.core.ThreadPool, tango.core.sync.Mutex; Mutex myLock; //used to control one thread outputs at a time //first thread prints 1 -> 30 void count() { for(int i = 1; i <= 30; i++) { say( i ); //if i is even yield our time slice if (i & 1) Thread.yield; } } void abc() { for(char i = 'A'; i <= 'Z'; i++) { say( "" ~ i ); //make sure it gets passed as a char[] //if i is even yield our time slice if (i & 1) Thread.yield; } } //sting say void say( char[] msg ) { //lock so say(int) cant write at same time synchronized( myLock ) Stdout(msg).newline; } //int say void say( int msg ) { //again lock so say(char[]) cant write synchronized( myLock ) Stdout(msg).newline; } void main() { //make a pool of 2 threads auto pool = new ThreadPool!() ( 2 ); //make our lock myLock = new Mutex; //add our threads to the pool, assign will start them right away //out queues them if all threads are busy, assign takes delegates //so we just wrap our funcs in braces :) pool.assign( { count; } ); pool.assign( { abc ; } ); //We join all threads! (wait till there finished and clean up pool.finish; }
Aug 07 2008