Windows线程(使用Event同步)
2008-10-09 22:47
435 查看
Windows线程(使用Event同步) 佟强 2008.10.9
#include <stdio.h>
#include <windows.h>
//线程函数
DWORD WINAPI MyThreadProc(LPVOID lpParameter);
//用户定义的类
class MyThreadParam{
public:
void myfunc();
};
HANDLE ev; //事件句柄
int main(int argc,char* argv[]){
DWORD myThreadID; //线程ID
MyThreadParam threadParam; //线程参数,可以传递任何类型的指针
HANDLE h; //线程句柄
//创建事件,初始为无信号,手工重置
ev = CreateEvent(NULL,TRUE,FALSE,"MyEventName");
h = CreateThread(NULL, //线程属性
0, //stack大小,0使用默认堆栈大小
MyThreadProc, //线程函数
&threadParam, //线程参数,LPVOID类型
0, //线程标志
&myThreadID //线程ID,输出值
);
printf("Thread ID is %d/n",myThreadID);
//等待事件有信号,即等待线程结束
WaitForSingleObject(ev,INFINITE);
printf("Thread %d terminated!/n",myThreadID);
//重置信号为无信号
ResetEvent(ev);
return 0;
}
DWORD WINAPI MyThreadProc(LPVOID lpParameter){
MyThreadParam *param = (MyThreadParam*)lpParameter;
for(int i=0; i<10; i++){
param->myfunc();
}
//置事件为有信号
SetEvent(ev);
return 0;
}
void MyThreadParam::myfunc(){
printf("Hello Thread!/n");
}
#include <stdio.h>
#include <windows.h>
//线程函数
DWORD WINAPI MyThreadProc(LPVOID lpParameter);
//用户定义的类
class MyThreadParam{
public:
void myfunc();
};
HANDLE ev; //事件句柄
int main(int argc,char* argv[]){
DWORD myThreadID; //线程ID
MyThreadParam threadParam; //线程参数,可以传递任何类型的指针
HANDLE h; //线程句柄
//创建事件,初始为无信号,手工重置
ev = CreateEvent(NULL,TRUE,FALSE,"MyEventName");
h = CreateThread(NULL, //线程属性
0, //stack大小,0使用默认堆栈大小
MyThreadProc, //线程函数
&threadParam, //线程参数,LPVOID类型
0, //线程标志
&myThreadID //线程ID,输出值
);
printf("Thread ID is %d/n",myThreadID);
//等待事件有信号,即等待线程结束
WaitForSingleObject(ev,INFINITE);
printf("Thread %d terminated!/n",myThreadID);
//重置信号为无信号
ResetEvent(ev);
return 0;
}
DWORD WINAPI MyThreadProc(LPVOID lpParameter){
MyThreadParam *param = (MyThreadParam*)lpParameter;
for(int i=0; i<10; i++){
param->myfunc();
}
//置事件为有信号
SetEvent(ev);
return 0;
}
void MyThreadParam::myfunc(){
printf("Hello Thread!/n");
}
相关文章推荐
- 基于visual c++之windows核心编程代码分析(14)使用Event同步线程
- Windows线程(使用Event同步)
- 基于visual c++之windows核心编程代码分析(12)使用信号量同步线程
- 线程同步之AutoResetEvent的使用
- 使用Event同步线程的小例子
- 基于visual c++之windows核心编程代码分析(15)使用Mutex同步线程
- 使用EventWaitHandle控制线程间的同步
- python gevent使用-最简单把同步程序变成异步程序
- 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份
- java中有几种方法可以实现一个线程?用什么关键字修饰同步方法 stop()和suspend()方法为何不推荐使用?
- Windows 平台下的同步机制 (3)– 事件(Event)
- windows c++ 使用锁来控制线程访问
- 使用Automachron软件解决Windows时间同步功能不能正常使用问题
- 使用cwRsync实现windows下文件定时同步(备份)
- Linux多线程——使用信号量同步线程
- Windows高级编程之线程与内核对象的同步
- 多线程篇(二)——线程之间的同步与互斥,关键段的使用
- [Windows]临界区,多媒体定时器,线程等概念使用方法
- Linux多线程——使用信号量同步线程
- Windows使用计划任务自动Git同步代码