Gabe Schaffer <[EMAIL PROTECTED]> wrote: >> >> Not quite. COND_WAIT takes an opaque type defined by the platform, that >> >> happens to be a mutex for the pthreads based implementation. >> >> > It should, but it doesn't. Here's the definition: >> > # define COND_WAIT(c,m) pthread_cond_wait(&c, &m) >> >> You are already in the POSIX specific part.
> It came from thr_pthread.h, so it should be POSIX. The issue here is > that it's #define COND_WAIT(c,m) instead of #define COND_WAIT(c). Well in the mentioned (TODO) platform/win32/threads.h you have to define your own COND_WAIT(c, m) - this is the interface of that macro, as POSIX needs the mutex, but you would ignore the 2nd parameter. Please have a look at the empty defines in include/parrot/threads.h. The problem is a different one: the COND_INIT macro just passes a condition location, the mutex is created in a second step, which isn't needed for windows. OTOH a mutex aka critical section is needed separatly. So we should probably define these macros to be: COND_INIT(c, m) COND_DESTROY(c, m) see src/tsq.c for usage. Does win32 require more info to create conditions/mutexes or would these macros suffice? [ I'll try to answer more in a separate thread ] leo