WaitForSingleObject和CEvent用法】的更多相关文章

WaitForSingleObject函数用来检测hHandle事件的信号状态,当函数的执行时间超过dwMilliseconds就返回,但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,否则就一直等待下去,直到WaitForSingleObject有返回直才执行后面的代码. CEvent 类提供了对事件的支持.事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象.例如在某些网络应用程序中,一个线程(记为A)负责监听通讯端口,另外一…
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法. 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力.这时,只能考虑使用内核模式. Windows提供了许多内核对象来实现线程的同步.对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态).Windows提供了几种内核对象可以处于已通知状态和未通知状态:进程.线程.作业.文件.控制台输入/输出 /错误流…
在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,信号是什么呢?首先我们可以假设这里存在一个文件和两个线程,我们规定这个文件同一时刻只能被一个线程所访问打开,那么我们的线程该如何知道这个文件现在有没有被别的线程访问呢?我们可以让线程等在一个死循环里,这个循环之…
在多线程下面,有时候会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,什么是信号呢?简单来说,Windows下创建的Object都会被赋予一个状态量.如果Object被激活了,或者正在使用,那么该Object就是无信号,也就是不可用:另一方面,如果Object可用了,那么它就恢复有信号了…
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号,不发信号. SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号. WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT,也可以是其它内核对象. 当你创建一个线程时,其实那个线…
对应函数 编辑 VC声明 DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );   参数 编辑 hHandle[in]对象句柄.可以指定一系列的对象,如Event.Job.Memory resource notification.Mutex.Process.Semaphore.Thread.Waitable timer等. dwMilliseconds[in]定时时间间隔,单位为milliseconds(毫秒).如果…
http://chinaxyw.iteye.com/blog/548622 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号,不发信号. SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号. WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJEC…
http://blog.pfan.cn/embed/19089.html WaitForSingleObject的用法 DWORD WaitForSingleObject(   HANDLE hHandle,   DWORD dwMilliseconds ); 参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔.如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT.…
一.CMutex CMutex mutex; mutex.Lock(); // 互斥的动作 // mutex.Unlock(); 二.CCriticalSection CCriticalSection g_thCurLock: g_thCurLock.Lock(); // 临界区 // g_thCurLock.Unlock(); 三.CSemaphore 信号量对象的成员函数Lock()将计数器的值 -1,当计数器为0时,就不再允许其他线程访问该资源:而当一个线程使用信号量对象的成员函数Unlo…
一.用CEvent实现线程同步 事件对象(Event)是最简单的同步对象,它包括有信号和无信号两种状态.在线程访问某一资源之前,也许需要等待某一事件的发生,这时用事件对象最合适.例如,只有在通信端口缓冲区收到数据后,监视线程才被激活.MFC中,CEvent类提供了对事件的支持.CEvent对象有两种类型:人工事件和自动事件.对于自动事件,当其获得信号后,就会释放下一个可用的线程.一个自动CEvent对象在被至少一个线程释放后会自动返回到无信号状态;而人工事件对象获得信号后,释放所有可利用线程,直…
http://blog.csdn.net/qq61394323/article/details/9328301 一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为 IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //…
WaitForSingleObject函数 VC声明 DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); VB声明 Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long 编辑本段说明 DWORD WINAPI WaitForSingl…
同步对象Event的用法  首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.  CreateEvent函数功能描述:创建或打开一个命名的或无名的事件对象.  EVENT有两种状态:发信号,不发信号.   SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号.   WaitForSingleObject()等待(阻塞),直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT,也可以…
CreateEvent: 1.函数功能: 创建一个命名或匿名的事件对象 2.函数原型: HANDLE CreateEvent(   LPSECURITY_ATTRIBUTES lpEventAttributes,                       // pointer to security attributes   BOOL bManualReset,    // flag for manual-reset event   BOOL bInitialState,   // flag…
http://www.cnblogs.com/Jekhn/archive/2012/08/25/2656656.html 线程,消息函数,SetWindowPos设置窗体位置 if WaitForSingleObject(FEvent,FInterval)=WAIT_OBJECT_0 then用法 //Main Form http://www.cnblogs.com/Jekhn/archive/2012/08/25/2656656.html unit unitMain; interface us…
http://blog.csdn.net/xiaobai1593/article/details/6672193 在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,什么是信号呢?简单来说,Windows下创建的Object都会被赋予一个状态量.如果Object被激…
http://blog.csdn.net/byxdaz/article/details/5638680 用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法. 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力. 这时,只能考虑使用内核模式.用户模式与内核模式线程同步机制比较 用户模式 内核模式 优点 线程同步机制速度快 支持多个进程之间的线程同步, 防止死锁 缺点 容易陷入死锁状态 线程同步机制速度慢 多个进程之间的…
最近工作中要维护一个windows模块,用到了mfc中的CEvent类.这算是很久很久以前的老朋友了吧,估计和我超过10年没见过面了,不过工作就是工作,技术上来不得半点含糊,所以还是重新认识一下这位老朋友吧. 本文用一个具体的例子来对CEvent类进行介绍,基本上掌握了这个例子后,我们就算是彻底认识CEvent类了.其实其它windows多线程同步的内核对象也大体如此,这是一帮老朋友们. 1.CEvent类 CEvent的接口很少: 基类就更简单了: 其实CEvent类只是对原生的Windows…
event是用来同步不同线程的.一旦一个线程结束了自己对全局资源的使用,他通过调用SetEvent通知别人可以使用了.如果这个被删了,其他线程将被阻塞 当一个线程里调用了::WaitForSingleObject(pEvent->m_hObject, INFINITE);时,会在这句上等待,而不往下操作,这时你就要用SetEvent将这等待改变,让线程能继续往下执行:总的来说,这是用于线程同步的 //////////////////////////////////////////////////…
NOTE0 在以下两种基本情况下,线程之间需要相互通信: 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性: 一个线程需要通知其它线程某项任务已经完成 1.原子访问:Interlocked系列函数 http://hi.baidu.com/microsoftxiao/blog/item/a6411546296bc90c6a63e561.html该文章不错.    所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源.     我们需要有一种方法能…
在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情(比如主线程等待子线程结束完之后,自己再结束),要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects.这两个函数都会等待Object被标为有信号(signaled)时才返回的.那么,信号是什么呢?首先我们可以假设这里存在一个文件和两个线程,我们规定这个文件同一时刻只能被一个线程所访问打开,那么我们的线程该如何知道这个文件现在有没有被别的线程访问…
ShellExecute: 1.函数功能:你可以给它任何文件的名字,它都能识别出来并打开它.2.函数原型: HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ); 3.参数说明:hwnd:用于指定父窗口句柄.当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口.lpOperatio…
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是用户跟Android应用进行数据传输的窗户,比如实现一个登陆界面,需要用户输入账号密码,然后我们获取用户输入的内容,提交给服务器进行判断. EditText 支持的 XML 属性及相关方法 XML 属性 相关方法 说明 android:text setText(CharSequence text)…
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie: $.cookie('user', 'bnbbs'); //设置cookie 参数 $.cookie('user', 'bnbbs', { expires : 7, //过期时间,7 天后 path : '/', //设置路径,上一层 domain : 'www.ycku.com', //设置域名…
                               Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的网络通信时通过Socket实现的,Socket分为ServerSocket和Socket两大类,ServerSocket用于服务器端,可以通过accept方法监听请求,监听请求后返回Socket,Socket用于完成具体数据传输,客户端也可以使用Socket发起请求并传输数据.ServerSocke…
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBox.Show (IWin32Window, String) 在指定对象的前面显示具有指定文本的消息框. MessageBox.Show (String, String) 显示具有指定文本和标题的消息框.由 .NET Compact Framework 支持. MessageBox.Show (IWi…
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , where thing is either an iterator or a sequence, returns a iterator that will return (0, thing [0]) , (1, thing [1]) , (2, thing [2]) , and so forth. A c…
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,…
用法: <div id="test">   <span style="color:red">test1</span> test2</div> 在JS中可以使用: test.innerHTML: 也就是从对象的起始位置到终止位置的全部内容,包括Html标签. 上例中的test.innerHTML的值也就是“<span style="color:red">test1</span>…
[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp]# cd /tmp [root@localhost tmp]# touch attrtest[root@localhost tmp]# chattr +i attrtest [root@localhost tmp]# rm attrtest rm: remove regular empty file…