c++开发过程中遇到的线程问题

     多线程编程,在不同的编程语言或库下面有不同的 多线程方法。

如 MFC下的 pThread = AfxBeginThread(mythread2, (LPVOID)this, NULL); 不太好用。

下面是C++标准库下的多线程编程方法,多线程编程一般都与信号关联,通过信号来决定线程的启动、挂起、重启、关闭等。

x线程的同步事件控制方法:一种是彼此互斥的对象,用来协调访问数据,如mutex对象;一种是事件同步对象,用来发送命令或触发事件,安排事件执行的先后次序,如event对象。

主要有这几个函数

 1、创建一个信号 Handle hEvent =  CreateEvent(NULL,true,true,NULL);

2、创建一个线程 Handle hThread = CreateThread(NULL, 0, InitThreadProc, this, 0, &m_dwThreadID);

 

3、SetEvent(m_hEvent);设置信号,有信号状态

4、ResetEvent(m_hEvent);重置信号,无信号状态

 

5、Dword dwStatus = WaitForSingleObject(m_hEvent, INFINITE);等待一个信号,ININITE无限等下去,直到有信号接受,返回;若是0,马上返回。

 

6、ColseHandle(m_hThread);//关闭一个线程。

7、GetExitCodeThread(m_hThread, &dwCode);获取一个已终止线程的退出代码,非0表示成功,0表示失败,会设置GetLastError().

 

类中也可以设置一些参数,当类的局部变量,供类使用。

基本上C++的多线程编程就这么多,总之线程和信号的连接使用,变化多端。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值