windows 的event机制非常成熟好用
在跨平台开发的时候想使用event机制,需要做一些封装
主要是采用 pthread_cond_t 机制封装
代码如下 (tag 采用8空格)
注释有时间在补充
#include <pthread.h>
#include <sys/time.h>
#include <assert.h>
#define INFINITE 0xFFFFFFFF // Infinite timeout
class ZdpEvent
{
public:
ZdpEvent(bool bIsManualReset, bool bInitialSignaled);
~ZdpEvent();
bool CreateEvent();
bool Set();
bool Reset();
bool Wait(int cms);
private:
bool EnsureInitialized();
bool m_bIsManualReset;
bool m_bEventStatus;
bool m_bMutexInitialized;
bool m_bCondInitialized;
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
};
ZdpEvent::ZdpEvent(bool bIsManualReset, bool bInitialSignaled)
: m_bIsManualReset(bIsManualReset)
, m_bEventStatus(bInitialSignaled)
, m_bMutexInitialized(false)
, m_bCondInitialized(false)