在Win32下,线程中的事件使用
来源:互联网 发布:ubuntu怎么卸载jdk 编辑:程序博客网 时间:2024/04/28 18:39
http://274387.blog.51cto.com/264387/60969
研究了下win32下线程的使用,在网上找了很多都是用的MFC下的类CEvent,为了方便研究,写了个win32下的,具体代码如下:
///////////////////////////////////////////////////////////
HANDLE hThread;
HANDLE hEvent;
DWORD WINAPI ThreadProc1( LPVOID lpParamenter);
int main(int argc, char* argv[])
{
// 更改第二个参数你会发现PulseEvent的用处,第三个参数用来设置初始状态是Singled还是Unsingled。 hEvent = CreateEvent(NULL, TRUE, FALSE, "abc");
hThread = CreateThread(NULL, NULL, ThreadProc1, NULL, NULL, NULL);
getchar();
PulseEvent(hEvent);
Sleep(1000);
getchar();
SetEvent(hEvent);
Sleep(1000);
ResetEvent(hEvent);
getchar();
PulseEvent(hEvent);
Sleep(1000);
TerminateThread(hThread, NULL);
printf("Hello World!/n");
return 0;
}
DWORD WINAPI ThreadProc1( LPVOID lParamenter )
{
int iCount = 0;
while( true )
{
WaitForSingleObject(hEvent, INFINITE);
printf("%d/n", iCount++);
}
return NULL;
}
///////////////////////////////////////////////////////////
运行环境: VC6.0
头文件: stdio.h,windows.h(winbase.h)
关键函数:
CreateEvent 创建事件对象函数
SetEvent 设置事件对象为Singled
ResetEvent 设置事件对象为Unsingled
PulseEvent 将指定的事件设为Singled。如果是一个人工重设事件,正在等候事件的、被挂起的所有线程都会进入活动状态。函数随后将事件设回,并返回。如果是一个自动重设事件,则正在等候事件的、被挂起的单个线程会进入活动状态。事件随后设回Unsingled,并且函数返回
WaitForSingleObject 等待对象函数
在自动重置模式下PulseEvent和SetEvent的作用没有什么区别,但在手动模式下PulseEvent就有明显的不同,你可以比较容易的控制程序是单步走,还是连续走。如果让循环按要求执行一次就用PulseEvent,如果想让循环连续不停的运转就用SetEvent,在要求停止的地方发个ResetEvent就OK了。
- 在Win32下,线程中的事件使用
- Win32 线程的事件使用
- 在Win32下使用OpenGL
- Win32消息在C#中的使用
- lpvoid 在 win32 api 中的使用
- 在win32下使用内存映射文件
- pthread-win32在VC2005下的使用
- pthread-win32在VC2005下的使用
- win32下线程封装
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息 (zhuan)
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息
- 使用PostThreadMessage在Win32线程间传递消息
- [转贴]使用PostThreadMessage在Win32线程间传递消息
- 例行维护前,你的测试部门加班吗?
- Texlive2009在win 7中的中文使用
- 回归正常生活
- Comparator对Map排序!
- 随笔
- 在Win32下,线程中的事件使用
- TEdit+TCombobox组合实现模糊匹配动态下拉
- C#的委托与Delphi中的"事件委托"
- tomca性能问题
- ewebEditor4.8默认上传文件大小限制到100k
- Struts文件上传功能的实现
- DoEvents的用法
- ADO.NET_DataReader对象
- 仅通过崩溃地址找出源代码的出错行