l 包含线程的进程终止(应当避免这种方式)
4 .2线程退出时OS的行为
l 线程内的所有用户对象被释放。
l 线程的退出码从STILL_ACTIVE改为传递给ExitThread或TerminateThread的代码
l 线程内核对象的状态改为“已通知”
l 如果线程为进程中的最后一个线程,则OS将进程当作已终止运行
l 线程内核对象的引用计数器减1(一旦线程终止了,其他引用改线程内核对象将不能够处理改线程的句柄,但是可以通过调用GetExitcodeThread来检查hThread代表的线程是否已经终止运行了。)
5 线程同步5 .1线程同步的起因以及解决之道5 .1.1共用资源型:多个线程需要访问同一个资源的时候,为了保证资源不被破坏,需要线程对资源的访问具有原子性。5 .1.2依赖型:一个线程等待另外一个线程某件事情完成后才能执行_可以通过手动事件的方式互相通知。windows多线程编程5 .2线程同步种类细分
CreateEvent
Event的重要属性有一个是“自动”or“手动”,如果是自动的,则在某个线程用Wait××成功等待到事件的“通知”状态后,则事件状态立刻变成“未通知”状态,以保证同时对资源访问的线程只有一个。
特别说明:WaitForSingleObject/WaitForMultipleObject是抑制线程本身的一种手法,配合以共用资源对象或所依赖的其他对象“通知状态”的原子性变化,以达到线程在争用资源、互相依赖时执行的顺序化,从而达到同步的目的。
综上:其实Windows的线程同步机制是提供了一组不同情况下的资源争用处理办法而已。与此同时推出的Wait××却可以带来很多其他好处,甚至部分缓解C++语言没有事件机制的缺憾,部分达到了JA,C#中事件机制的效果,为Oberserve模式的实现做了些贡献。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49700-3.html
把中国人全改造成奴隶