关于semaphore的问题:在线等待..... msdn上说使用semaphore可以控制访问公共资源的线程数量,使用releasesemaphore可以使count加1,云云。我的问题是:怎么能知道被控制访问的公共资源是什么啊?它和waitforsingleobject等等待函数是什么关系呢,那位大侠若能举出一浅显易懂的例子来让我这个笨人明白其中的机理,100分相送。我看了一天愣是没整明白这个线程同步和互斥! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UINT ThreadProc15(LPVOID pParam){ // 试图进入信号量关口 WaitForSingleObject(hSemaphore, INFINITE); // 线程任务处理 AfxMessageBox("线程一正在执行!"); // 释放信号量计数 ReleaseSemaphore(hSemaphore, 1, NULL); return 0;} “公共资源”就是指你需要保护的东西CreateSemaphore里可以规定Semaphore的初始信号个数,它的作用是指定Semaphore可以被使用的个数,那么当创好Semaphore之后,当调用WaitForSingleObject后,Semaphore便减一(从初始的个数里减),如果次数已经是0,则WaitForSingleObject会等待如果WaitForSingleObject成功了(Semaphore已经减一),不需要保护时,可以调用ReleaseSemaphore,增加Semaphore的个数(因为它原来使用一个个数),这样可以保证别的地方可以继续WaitForSingleObject,它的作用一般就是保护某个资源(或代码)只能被指定个数的单元访问(超出的必须等待) 如果还不懂,有本书不错,《Win32 多线程程序设计》,侯捷翻译的 windows如何配置SVN服务器及客户端? 求助:richedit改变字体的问题 为什么返回值是-1 写一个,辨析文本文件的程序,,就是把所有文本文件都要挑选出来,,,不能根据后缀名... 语句 CObject *(PASCAL * m_pfnCreateObject)() 怎么理解? 100分急问,马上给分! winPcap应用问题!!郁闷死我了·各位大虾救命 啊 在COM通信中,利用异步方式发送数据 _RecordsetPtr中的GetCollect出错 如何将字符数组赋值给字符串,在线等着呢,没有分了 ***小问题**** 请问抽象类和接口类怎么区别?
{
// 试图进入信号量关口
WaitForSingleObject(hSemaphore, INFINITE);
// 线程任务处理
AfxMessageBox("线程一正在执行!");
// 释放信号量计数
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
如果WaitForSingleObject成功了(Semaphore已经减一),不需要保护时,可以调用ReleaseSemaphore,增加Semaphore的个数(因为它原来使用一个个数),这样可以保证别的地方可以继续WaitForSingleObject,它的作用一般就是保护某个资源(或代码)只能被指定个数的单元访问(超出的必须等待)