1: #line 1003 "./lpsrc/flx_pthread.pak"
2:
3:
4:
5:
6:
7:
8:
9: namespace flx { namespace pthread {
10:
11:
12:
13:
14: class PTHREAD_EXTERN flx_condv_t {
15: public:
16: pthread_cond_t cv;
17: flx_condv_t();
18: ~flx_condv_t();
19: void signal();
20: void broadcast();
21: void wait(flx_mutex_t*);
22: int timedwait(flx_mutex_t*, timespec*);
23: };
24:
25: }}
26:
27:
1: #line 1031 "./lpsrc/flx_pthread.pak"
2:
3:
4:
5:
6: namespace flx { namespace pthread {
7:
8: flx_condv_t::flx_condv_t() { pthread_cond_init(&cv, NULL); }
9: flx_condv_t::~flx_condv_t() { pthread_cond_destroy(&cv); }
10: void flx_condv_t::wait(flx_mutex_t *m) { pthread_cond_wait(&cv,&(m->m)); }
11: void flx_condv_t::signal() { pthread_cond_signal(&cv);}
12: void flx_condv_t::broadcast() { pthread_cond_broadcast(&cv); }
13: int flx_condv_t::timedwait(flx_mutex_t *m, timespec *t) {
14: int res = pthread_cond_timedwait(&cv,&(m->m),t);
15: #ifndef _WIN32
16: if(res==EINVAL) return 0;
17: #endif
18: return res;
19: }
20: }}
21: