From: William F. <wsf...@us...> - 2006-08-11 22:55:22
|
Update of /cvsroot/swig/SWIG/Examples/test-suite In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv4390/Examples/test-suite Modified Files: director_thread.i Log Message: Ported threading to win32 Index: director_thread.i =================================================================== RCS file: /cvsroot/swig/SWIG/Examples/test-suite/director_thread.i,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** director_thread.i 11 Aug 2006 22:34:08 -0000 1.2 --- director_thread.i 11 Aug 2006 22:55:19 -0000 1.3 *************** *** 9,17 **** %{ #include <pthread.h> #include <iostream> class Foo; ! extern "C" void* working(void* t); %} --- 9,26 ---- %{ + #ifdef _WIN32 + #include <windows.h> + #include <process.h> + #else #include <pthread.h> + #include <unistd.h> + #endif + #include <iostream> class Foo; ! extern "C" { ! void* SWIGSTDCALL working(void* t); ! } %} *************** *** 19,28 **** %inline { class Foo { public: int val; pthread_t *t; ! Foo() : val(0) { t = new pthread_t; } --- 28,46 ---- %inline { + static void MilliSecondSleep(int milliseconds) { + #ifdef _WIN32 + Sleep(milliseconds); + #else + usleep(milliseconds*1000); + #endif + } + class Foo { public: int val; pthread_t *t; + unsigned int thread_id; ! Foo() : val(0), thread_id(0) { t = new pthread_t; } *************** *** 33,38 **** void run() { pthread_create(t,NULL,working,this); ! sleep(5); } --- 51,60 ---- void run() { + #ifdef _WIN32 + _beginthreadex(NULL,0,run,this,0,&thread_id); + #else pthread_create(t,NULL,working,this); ! #endif ! MilliSecondSleep(5000); } *************** *** 43,51 **** } ! %inline { ! extern "C" void* working(void* t) { Foo* f = static_cast<Foo*>(t); while (1) { ! sleep(1); f->do_foo(); } --- 65,74 ---- } ! %inline %{ ! extern "C" { ! void* working(void* t) { Foo* f = static_cast<Foo*>(t); while (1) { ! MilliSecondSleep(1000); f->do_foo(); } *************** *** 53,54 **** --- 76,78 ---- } } + %} |