aboutsummaryrefslogtreecommitdiff
path: root/src/rt/sync/lock_and_signal.h
blob: 5a852d9d0263c22b8a833f699fb76178df148212 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef LOCK_AND_SIGNAL_H
#define LOCK_AND_SIGNAL_H

class lock_and_signal {
#if defined(__WIN32__)
    HANDLE _event;
    CRITICAL_SECTION _cs;
#else
    pthread_cond_t _cond;
    pthread_mutex_t _mutex;
#endif
public:
    lock_and_signal();
    virtual ~lock_and_signal();

    void lock();
    void unlock();
    void wait();
    void timed_wait(size_t timeout_in_ns);
    void signal();
};

#endif /* LOCK_AND_SIGNAL_H */