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

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

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

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

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

主要有这几个函数

 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++的多线程编程就这么多,总之线程和信号的连接使用,变化多端。