头文件:
#include <stdbool.h>
// 句柄
typedef void* EventHandle;
// 创建实例
EventHandle stCreateEvent(bool initState, bool manualReset);
// 释放实例
void stReleaseEvent(EventHandle handle);
// 等待事件。有信号返回true,否则false。无限等待时 waitTime_ms 置 0xffffffff。
bool stWaitEvent(EventHandle handle, unsigned int waitTime_ms);
// 重置事件为无信号
void stResetEvent(EventHandle handle);
// 事件设为有信号
void stSetEvent(EventHandle handle);
实现:
#include "cEvent.h" // 这是头文件名字
#include <pthread.h>
#include <sys/time.h>
#include <errno.h>
#include <stdlib.h>
#include <assert.h>
#include <unistd.h>
typedef struct {
bool m_state; // true : 有信号; false : 无信号
bool m_manualReset;
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
} st_Event_Info;
EventHandle stCreateEvent(bool initState, bool manualReset)
{
st_Event_Info* p = (st_Event_Info*)malloc(sizeof(st_Event_Info));
if (p) {
p->