X-Git-Url: http://nitlanguage.org diff --git a/lib/pthreads/extra.nit b/lib/pthreads/extra.nit index 94ea0e2..e408270 100644 --- a/lib/pthreads/extra.nit +++ b/lib/pthreads/extra.nit @@ -16,17 +16,18 @@ # Offers some POSIX threads services that are not available on all platforms module extra is - c_compiler_option("-pthread") - c_linker_option("-pthread") + cflags "-pthread" + ldflags "-pthread" end intrude import pthreads in "C" `{ // TODO protect with: #ifdef WITH_LIBGC + #ifndef ANDROID #define GC_THREADS #include - //#endif + #endif `} redef extern class NativePthread @@ -47,3 +48,15 @@ end # Does not return if the running thread is to be cancelled fun test_cancel `{ pthread_testcancel(); `} + +private extern class NativePthreadBarrier in "C" `{ pthread_barrier_t * `} + new(count: Int) `{ + pthread_barrier_t *barrier = malloc(sizeof(pthread_barrier_t)); + int res = pthread_barrier_init(barrier, NULL, count); + return barrier; + `} + + fun destroy `{ pthread_barrier_destroy(recv); `} + + fun wait `{ pthread_barrier_wait(recv); `} +end