SleepConditionVariableSRW线程最佳同步实现
来源:互联网 发布:樱井知香喷泉 编辑:程序博客网 时间:2024/06/05 14:14
1 几个关键函数
//条件休眠线程 BOOL SleepConditionVariableSRW ( PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags); // 唤醒一个等待条件变量的线程 VOID WakeConditionVariable (PCONDITION_VARIABLE ConditionVariable); // 唤醒所有等待条件变量的线程 VOID WakeAllConditionVariable (PCONDITION_VARIABLE ConditionVariable)
2 样例
2.1 三个变量
BOOL RUNNING=FALSE; SRWLOCK g_srwlock; //读写同步对象 CONDITION_VARIABLE g_full; //条件变量2.2 线程
UINT ThreadFun(LPVOID) { AfxMessageBox(TEXT("Thread IS BEGINNING")); /* 1)启动线程前执行 AcquireSRWLockExclusive(&g_srwlock); 可以阻止线程继续执行, 如果想让线程继续,只需执行 ReleaseSRWLockExclusive(&g_srwlock); */ /* 2)通过布尔变量判断,利用条件休眠可以阻止线程继续 如果想让线程继续,只需执行 WakeAllConditionVariable(&g_full); */ AcquireSRWLockExclusive(&g_srwlock); if (RUNNING==FALSE) SleepConditionVariableSRW(&g_full, &g_srwlock, INFINITE, 0); AfxMessageBox(TEXT("Thread is continue")); for(int i=0;i<100;++i) { Sleep(50);} ReleaseSRWLockExclusive(&g_srwlock); AfxMessageBox(TEXT("Thread IS OVER")); return 1; }2.3 启动线程并休眠
InitializeSRWLock(&g_srwlock); //AcquireSRWLockExclusive(&g_srwlock); AfxBeginThread(ThreadFun,NULL);2.4 唤醒线程继续执行
//1) //ReleaseSRWLockExclusive(&g_srwlock); WakeAllConditionVariable(&g_full);
阅读全文
0 0
- SleepConditionVariableSRW线程最佳同步实现
- SleepConditionVariableSRW线程最佳同步实现
- 事件实现线程同步
- 信号量实现线程同步
- 如何实现线程同步
- 线程同步实现
- 线程同步实现
- synchronized实现线程同步
- JAVA实现线程同步
- 线程的同步:通过同步方法实现
- 使用信号实现线程同步
- 利用事件实现线程同步
- 事件对象实现线程同步
- 线程同步的一种实现
- 完成量实现线程同步
- Java如何实现线程同步
- VC++ 线程同步 方法 实现
- Lock实现线程的同步
- 域名解析
- LINUX系统移植(史上最全最细,强烈推荐)
- KNN回归在无线定位上的应用
- iOS 一一 AutoLayout之XIB实现
- VSS、VDD 与 VCC 的区别
- SleepConditionVariableSRW线程最佳同步实现
- 爬虫第一天:环境配置
- HDU
- Piggy-Bank (完全背包 动态规划)
- 在window下 安装vue.js
- Python中list的extend方法
- spring-boot 之 Hello World
- bootstrap table服务端实现分页
- C#封装DataTable到DBF