多线程-事件机制
来源:互联网 发布:vb外接程序管理器 编辑:程序博客网 时间:2024/05/16 07:38
多线程-事件机制:
即线程B的启动需要等待线程A的某个信号,如果等待到信息则开始执行,代码如下,摘自《精通Windows API》 :
/* *************************************《精通Windows API》 * 示例代码* Event.c* 7.2.1 演示使用Event同步线程**************************************//* 头文件 */#include <windows.h>#include <stdio.h>/* 常量定义 */#define NUMTHREADS3 #define BUFFER_SIZE16#define FOR_TIMES5/* 全局变量 */HANDLE hEvent;// 用于同步BYTE lpSharedBuffer[16] = {0};// 共享内存/* 函数声明 */void UseEvents(void);DWORD WINAPI EventFunction(LPVOID lpParam);/************************************** int main(void)* 功能演示** 参数未使用**************************************/int main(){UseEvents();}/************************************** void UseEvents(void) * 功能演示Event的使用方法** 参数未使用**************************************/void UseEvents(void) {HANDLE hThread; hEvent = CreateEvent( NULL,// 默认安全属性TRUE,// 手工重置FALSE,// 初始为未置位的NULL// 未命名);// 判断是否创建成功if (hEvent == NULL) { printf("CreateEvent failed (%d)\n", GetLastError());return;}// 创建线程hThread = CreateThread(NULL, 0, EventFunction, NULL,0, NULL); if (hThread == NULL) {printf("CreateThread failed (%d)\n", GetLastError());return;}Sleep(2000); // 可以做一些其他处理// 向共享内存中复制数据CopyMemory(lpSharedBuffer,"Event",lstrlen("Event"));// 设置 Event 使ThreadFunction线程可以开始复制数据SetEvent(hEvent);}/************************************** DWORD WINAPI EventFunction(LPVOID lpParam)* 功能线程函数,读共享内存** 参数未使用**************************************/DWORD WINAPI EventFunction(LPVOID lpParam) {DWORD dwWaitResult;// 等待,直到事件被置位dwWaitResult = WaitForSingleObject( hEvent,// Event 句柄INFINITE);// 无限等待if (dwWaitResult != WAIT_OBJECT_0) {printf("Wait error: %d\n", GetLastError()); return 0;}// 读共享内存printf(lpSharedBuffer);// 重置事件if (! ResetEvent(hEvent) ) { printf("SetEvent failed (%d)\n", GetLastError());return 0;}return 1;}
0 0
- 多线程-事件机制
- windows多线程同步机制---事件
- 多线程同步--(事件机制CEvent)(七)
- 多线程-事件
- 多线程机制
- 多线程机制
- 事件机制
- 事件机制
- 事件机制
- 事件机制
- 事件机制
- 事件机制
- 事件机制
- 事件机制
- 事件和事件机制
- delphi多线程编程中利用事件机制同步的初步实现
- FLEX 事件机制-自定义事件
- Java事件机制---自定义事件
- ls 查看文件与目录
- codeforces 251E: Devu and Birthday Celebration(求把这个n分成f块,切这f块的gcd为1有多少种方法)
- odoo form页面底部标签页默认激活通过js设置
- Linux Shell基本命令
- POJ 1286 Necklace of beads
- 多线程-事件机制
- Windows 10周年更新正式发布!!!想继续免费升级Windows 10另有他法!!!
- HDU5794 A Simple Chess
- PB窗口控件
- exynos4412开发板LED驱动程序
- 使用Spring + Jedis集成Redis
- Entity Framework6 with Oracle
- 欢迎使用CSDN-markdown编辑器
- cp 复制文件或目录