This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Thanks for the advice. There is one error in the
original code frag, though:
(taken from the Linux threads man
pages)
The sem_wait and sem_getvalue
functions always return 0.
So, the assert() on sem_getvalue() should always
have worked,
under the linux threads documentation.
pthreads-win32, however, seems to return -1
on failure (which
is ok for the code frag)
if ( result != 0 )
{ errno = result; return -1; } However, this indicates that the sem_getvalue() implementation in pthreads-win32, or my
compilation, is not quite as it should be.
Thanks to J Bossom for his suggestion. The
following fragment
compiles and runs just fine:
#include <semaphore.h>
#include <cassert> #include <iostream> using namespace std;
int main()
{ /** * We want to check wether a semaphore can be initialised * with a value. */ // a semaphore sem_t psem; // initialise it with value
10
assert(sem_init(&psem,0,10) == 0); // if the semaphore initialisation was ok, the sem // should now have the value 10 // trying out J Bossom's idea of
counting down
// using a trywait int cnt=0; while (sem_trywait(&psem)==0) cnt++; cout << "Final value of cnt is " << cnt << endl << flush; return 0; } This indicates that the sem_init() and
sem_trywait(), functions
are OK.
|
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |