g_hUpdateSemph = CreateSemaphore(NULL,1,1,NULL);
WaitForSingleObject(g_hUpdateSemph,INFINITE);
ReleaseSemaphore(g_hUpdateSemph,1,&dwPrevCnt);
那位兄第能解释一下这三个函数的意思
解决方案 »
- 送分------60分先到先得
- 跪求大牛解疑:如何判断鼠标在第几页上的?
- 问个WINPCAP捕获数据的问题
- 一篇求职博文,敬请关注一次,谢谢
- 请问单选按钮如何自动获得TAB焦点
- 关于137端口的扫描问题?
- 使用wchar_t和使用unsigned short声明的函数冲突问题?
- BSTR 怎么轉化到 CString 啊?
- 请问:m_MyBtn.SubclassDlgItem( IDC_OWN, this );是什么意思?
- 敢问谁是高手????
- 如何在ado中执行“select * from table group by name"
- 谁会做像 魔力宝贝 那样的内嵌输入法,我给高分。要有代码哦。(共有5000等着你)
HANDLE CreateSemaphore( );
或者打开一个信号对象
HANDLE OpenSemaphore( );
然后在线程的访问共享资源之前,调用WaitForSingleObject,
共享资源访问完后,释放对信号对象的占用
ReleaseSemaphore();
信号对象允许同时多个线程共享资源的访问,在创建对象时指定最大可同时访问线程数,当一个线程申请访问成功后,信号对象中的计数器减一,调用ReleaseSemaphore函数后,信号对象中的计数器加一。其中计数器值大于等于0,小于等于创建时指定的最大值。利用信号对象,我们不仅可以控制共享资源的访问,还可以在应用的初始化时候使用,假定一个应用在创建一个信号对象时,设置其计数器的初始值为0,这样就阻塞了其它线程,保护了资源,待初始化完成后,调用ReleaseSemaphore函数增加其计数器至最大值,进行正常的存取访问。
具体可以参考<windows高级编程>第3版