线程同步之事件同步
来源:互联网 发布:java中的观察者模式 编辑:程序博客网 时间:2024/05/20 11:19
使用事件同步,主要是一个事件句柄和五个函数:
HANDLE g_hEvent = NULL;
g_hEvent = CreateEvent(NULL, FALSE, TRUE, L"Test Event");
WaitForSingleObject(g_hEvent, INFINITE);
SetEvent(g_hEvent);
ResetEvent(g_hEvent);
CloseHandle(g_hEvent);
示例:
// Event.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "process.h"#include "windows.h"#include "stdio.h"HANDLE g_hEvent = NULL;unsigned __stdcall thread1(void *lparam);int main(){/*参数2:指定将事件对象创建成手动复原还是自动复原。 如果是TRUE,那么必须用ResetEvent函数来手工将事件的状态复原到无信号状态。 如果设置为FALSE,当一个等待线程被释放以后,系统将会自动将事件状态复原为无信号状态。参数3:指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为无信号状态。参数4:跨进程会使用到该名字参数*/g_hEvent = CreateEvent(NULL, FALSE, TRUE, L"Test Event");UINT iThreadId = 0;_beginthreadex(NULL, 0, thread1, NULL, 0, &iThreadId);_beginthreadex(NULL, 0, thread1, NULL, 0, &iThreadId);_beginthreadex(NULL, 0, thread1, NULL, 0, &iThreadId);getchar();if (g_hEvent){CloseHandle(g_hEvent);} return 0;}void useEvent() {WaitForSingleObject(g_hEvent, INFINITE);printf("正在调用Event");/* * SetEvent函数将状态设置为有信号,ResetEvent函数将状态设置为无信号。* 此处如果不调用SetEvent或者在最后调用ResetEvent都会使运行在该线程之后的线程等待。*/SetEvent(g_hEvent); }unsigned __stdcall thread1(void *lparam){useEvent();return 0;}
0 0
- 线程同步之事件同步
- 线程同步之事件
- 线程同步之事件对象
- 线程同步之事件对象
- 多线程编程实例----线程同步之事件
- C++ 线程同步之 事件的使用
- 同步 线程 事件
- 线程,事件,同步随笔
- 线程同步:事件对象
- 事件实现线程同步
- 使用事件同步线程
- 线程同步--事件Event
- 线程同步之信号量同步
- 线程同步之信号量同步
- 线程之线程同步
- VC之 线程同步之事件对象(Event)
- 线程同步-事件对象(转)
- 利用事件实现线程同步
- 清水摇不浑
- errno
- servlet详解
- 人生是一场相遇
- POJ 2752 Seek the Name, Seek the Fame
- 线程同步之事件同步
- 在iOS8中本地通知不能显示的问题
- iOS8 CLLocationManager 的改变导致 locationManager didUpdateLocations不能被调用的解决办法
- Xcode6 app沙盒目录
- Intelligent IME
- javascript没有块级作用域
- [LeedCode OJ]#58 Length of Last Word
- Python 单元测试框架 —— PyUnit
- Android 5.0的调度作业JobScheduler