服务端框架之同步事件
来源:互联网 发布:g71车盲孔编程实例 编辑:程序博客网 时间:2024/05/15 05:55
#include "CEvent.h"#include <cassert>#include "CMutex.h"#include "CSystemLog.h"#ifdef _WIN32#pragma warning(disable:4800)#endifCCEvent::CCEvent(void){DT_BOOL ret = Create();assert(ret == DT_TRUE);}CCEvent::~CCEvent(void){Close();}DT_BOOL CCEvent::Create(){#ifdef _WIN32m_handle = CreateEvent(0, DT_TRUE, DT_FALSE, 0);return m_handle != 0;#elsesigemptyset(&m_sigs);sigaddset(&m_sigs, SIGUSR1);sigprocmask(SIG_BLOCK, &m_sigs, 0); return DT_TRUE;//return pthread_cond_init(&m_handle, 0) == 0;#endif}//上锁DT_BOOL CCEvent::Lock(){#ifdef _WIN32DT_BOOL ret = ResetEvent(m_handle);//设置为无信号量WaitForSingleObject(m_handle , INFINITE);//如果dwMilliseconds为INFINITE,对象被触发信号后,函数才会返回。线程会阻塞在此return ret;#else//堵塞信号DT_INT32 sig; sigwait(&m_sigs, &sig);return DT_TRUE;// return pthread_cond_wait(&m_handle, &(mutex.m_handle)) == 0;#endif }//解锁DT_BOOL CCEvent::UnLock(DT_DWORD pThread){#ifdef _WIN32return SetEvent(m_handle);//设置为有信号量#elsepthread_t* pTid = (pthread_t*)pThread;pthread_kill(*pTid, SIGUSR1);return DT_TRUE; // return pthread_cond_signal(&m_handle) == 0;#endif}//关闭void CCEvent::Close(){#ifdef _WIN32CloseHandle(m_handle);#else // pthread_cond_destroy(&m_handle);#endif}
0 0
- 服务端框架之同步事件
- 线程同步之事件同步
- 手游服务端框架之使用事件驱动模型解决业务高耦合
- 服务端框架之mysql分析
- 线程同步之事件
- 同步服务端
- 线程同步之事件对象
- 线程同步之事件对象
- 多线程编程之事件同步
- 进程同步之事件(Event)
- 手游服务端框架之网关
- git同步服务端
- 多线程编程实例----线程同步之事件
- Windows中多线程同步之事件(Event)
- 多线程同步之Event(事件对象)
- 白话windows多线程同步之事件对象
- 同步并发操作之等待一次性事件
- C++ 线程同步之 事件的使用
- 结构体大小的计算
- java 保留小数与四舍五入以及时间日期的转换和excel读入与数据库写入
- Java NIO使用及原理分析 (一)
- Ubuntu下Opendaylight导入到eclipse教程
- ns3与最新版本pygccxml编译问题
- 服务端框架之同步事件
- ffmbc——为广播电视以及专业用途量身定制的FFmpeg
- Java---多态
- AI BP神经网络判断手写数字
- Java Classloader机制解析
- sql的临时表使用小结
- Oracle 中的Userenv()
- 打的、约炮,Uber 请留条活路!
- eclipse 安装maven插件