WaitForSingleObject的作用[转]】的更多相关文章

在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情(比如主线程等待子线程结束完之后,自己再结束),要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,信号是什么呢?首先我们可以假设这里存在一个文件和两个线程,我们规定这个文件同一时刻只能被一个线程所访问打开,那么我们的线程该如何知道这个文件现在有没有被别的线程访问…
在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,信号是什么呢?首先我们可以假设这里存在一个文件和两个线程,我们规定这个文件同一时刻只能被一个线程所访问打开,那么我们的线程该如何知道这个文件现在有没有被别的线程访问呢?我们可以让线程等在一个死循环里,这个循环之…
很多程序在创建线程都这样写的: ............ ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); ..... 这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closing a thread handle does not terminate the associated thread. To remo…
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序.一般情况下,分为两种类型的多任务处理:基于进程和基于线程. 1)基于进程的多任务处理是程序的并发执行. 2)基于线程的多任务处理是同一程序的片段的并发执行. 多线程程序包含可以同时运行的两个或多个部分.这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径.在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源.比如说,同一个文件,可能一个线程会对其进行写操作,而另一个线程需要对这个文件进行…
1.WaitForSingleObject 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.这些等待函数中最常用的是WaitForSingleObject:   DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds); 当线程调用该函数时,第一个参数hObject标识一个能够支持被通知/未通 知的内核对象.第二个参数dwMilliseconds.允许该线程指明,为了等待该对象变为已通知状态,它将等…
原文地址:http://blog.zhaojie.me/2009/07/thread-pool-2-dedicate-pool-and-io-pool.html 在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性.不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式. 独立线程池 上次我们讨论到,在一个.NET应用程序中会有一个CLR线程池,可以使用ThreadPool类中的静态方法来使用这个线程池.我们只要使用QueueU…
系统核心对象中的Event事件对象,在进程.线程间同步的时候是比较常用,发现它有两个出发函数,一个是SetEvent,还有一个PulseEvent, 两者的区别是: SetEvent为设置事件对象为有信号状态:而PulseEvent也是将指定的事件设为有信号状态, 不同的是如果是一个人工重设事件,正在等候事件的.被挂起的所有线程都会进入活动状态,函数随后将事件设回,并返回:如果是一个 自动重设事件,则正在等候事件的.被挂起的单个线程会进入活动状态,事件随后设回无信号,并且函数返回. 也就是说在自…
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号,不发信号. SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号. WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT,也可以是其它内核对象. 当你创建一个线程时,其实那个线…
  线程状态在一个线程的生存期内,可以在多种状态之间转换.不同操作系统可以实现不同的线程模型,定义许多不同的线程状态,每个状 态还可以包含多个子状态.但大体说来,如下几种状态是通用的:       就绪:参与调度,等待被执行.一旦被调度选中,立即开始执行.       运行:占用CPU,正在运行中.       休眠:暂不参与调度,等待特定事件发生.       中止:已经运行完毕,等待回收线程资源(要注意,这个很容易误解,后面解释).线程环境线程存在于进程之中.进程内所有全局资源对于内部每个线…
Mutex与Event控制互斥事件的使用详解 最近写一程序,误用了Mutex的功能,错把Mutex当Event用了. [Mutex] 使用Mutex的主要函数:CreateMutex.ReleaseMutex.OpenMutex.WaitForSingleObject.WaitForMultipleObjects. CreateMutex:其中第二个参数是表示当前线程拥有权. TRUE:创建线程获得初始所有权的互斥对象(即信号已被当前线程获得,没有释放前其它线程不能获得.如果当前线程调用了Wai…