在VC++中,常规的创建线程方式有四种:
1. 使用CreateThreadAPI提供的CreateThread函数;
2. 使用C++语言提供的_beginthreadex函数;
3. 在MFC程序中使用AfxBeginThread函数;
4. 使用MFC类库中CWinThread类创建线程。
使用1,2种方法,创建的线程会返回一个线程句柄HANDLE。对于线程句柄的理解中,有一个常规的问题:
为什么在创建了线程后,直接调用CloseHandle函数。这样是否会不执行线程而直接关闭线程?
实际上调用CloseHandle只是关闭了线程句柄,并没有关闭线程。线程会继续执行,在执行完成后调用return才结束线程。
创建线程后,操作系统会为其分配一个内核对象,并将该内核对象的引用计数置为2。CloseHandle只是将引用计数值减一,该引用计数不为零,所以不会清除,线程依旧会继续执行。
线程句柄的作用是可以通过它开控制线程,如果关闭了句柄线程就会交给操作系统,用户不能改变它的状态了。
常规的通过线程句柄进行的操作有挂起线程,唤醒以及中断等操作。
线程同步:
同步方式有四种:
1. 使用事件对象实现线程同步;
2. 使用信号量对象实现线程同步;
3. 使用临界区对象实现线程同步;
4. 使用互斥对象实现线程同步。
实现线程同步介绍找到了一份详细的介绍,参看http://blog.csdn.net/morewindows/article/details/7392749