使用Event同步线程的小例子
来源:互联网 发布:电子书阅读小软件 编辑:程序博客网 时间:2024/05/16 17:55
使用Event同步线程的小例子
在多线程编程中,有时候我们需要一个函数调用不是立即返回,而是在等待某个线程结束后再返回。要达到这个目的有很多种方法,这篇日志我只说一下使用 Event 的方法。
看一个小例子,在 main 函数中创建一个线程计算 1, 2, 3,..., 100 的和并打印结果——由于这个计算的执行时间实在太短,所以让线程休眠 2 秒钟虚拟一个更加耗时的计算过程——等待线程结束后 main 函数返回。
源代码如下:
#include"stdafx.h"
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
HANDLE hThread = NULL;
HANDLE hEvent = NULL;
DWORD WINAPI ThreadProc(LPVOIDlpParam)
{
int s = 0;
for (int i = 1; i <=100; i++)
s += i;
::Sleep(2000);
printf("%d\n", s);
::SetEvent(hEvent);
return 0;
}
int _tmain(int argc, _TCHAR*argv[])
{
int sum = 0;
hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
hThread = ::CreateThread(NULL, 0, ThreadProc, NULL,0, NULL);
::WaitForSingleObject(hEvent, INFINITE);// 注释掉这一行
::CloseHandle(hThread);
::CloseHandle(hEvent);
return 0;
}
程序运行结果:
5050
如果我们不使用 Event 来同步线程能不能得到这个计算结果呢,修改上面的小例子,把 WaitForSingleObject
那一行注释掉再运行看看,由于这时 main 函数不再等待线程执行结束就已经返回,运行得不到正确的计算结果。
- 使用Event同步线程的小例子
- 线程同步的小例子
- 使用Event同步线程
- java线程同步的小例子
- 使用事件机制同步线程的例子
- QT之使用QMutex/ QMutexLocker互斥量同步线程小例子
- QT之使用QReadWriteLocker互斥量同步线程小例子
- QT之使用QSemaphore信号量同步线程小例子
- QT之使用 QWaitCondition 同步线程小例子
- event的使用例子
- 线程同步的例子
- Windows线程(使用Event同步)
- 线程同步wait notify小例子
- 线程同步 生产者消费者小例子
- 多线程之同步线程通信小例子
- 同步问题 Event的使用
- 同步对象Event的使用
- 多线程Event的使用例子
- ORA-12518 TNS:监听程序无法分发客户机连接 解决办法(转)
- 两种获取灰度图像的方法
- C语言中scanf的问题
- 解析C++中的内部连接与外部连接
- 使用CTabCtrl控件实现属性页功能
- 使用Event同步线程的小例子
- android 基本环境配置
- 关于对齐
- oracle使用-解决无法启动监听器
- 裁员屠刀下一个目标会是谁?
- 手机短信字符编码的问题
- Java基础20天--04--IO流
- 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
- EXECL2003宏被禁用的解决办法