2 sinat 33314857 sinat_33314857 于 2016.03.21 10:31 提问

对c++多线程编程中信号量的疑惑,求解

最近在写多线程,使用到信号量,对于信号量创建、释放createsemaphore和releasesemaphore中的初始资源数、最大并发数、计数增加个数不解,之前有用过,但都没有深入了解以至于现在模糊不清,最大并发数是指什么线程的最大并发数,自己线程or其他线程?增加的计数如果是2,是不是就相当于调用了两次waitfor函数?恳请熟悉这方面的朋友能给一个更为细致具体的讲解,小女不胜感激图片说明

1个回答

u012494939
u012494939   2016.03.21 11:37
已采纳

信号量就是限制同时只有1个或多个线程能够运行,数量取决于设置的最大并发数。
线程首先得申请一个资源才能够运行,运行结束后要释放资源。
计数增加应该是释放信号量后,信号量的可用个数增加

u012494939
u012494939 回复sinat_33314857: 并发数就是允许同时只有这几个线程运行;资源计数就是保证所有的任务都能够申请到这个信号量来执行,每个任务执行完成后需释放资源,留给其他任务申请使用
一年多之前 回复
sinat_33314857
sinat_33314857 类似的,如果我有4个线程函数,那么我可以设置最大并发数为4,允许同一时间这四个线程都运行(对吗?求解);而资源计数,可以根据情况调整,既可以为1或者我需要当前线程一直执行可以的次数,直至计数值减为小于0值~谢谢朋友的解答~
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!