1
0
你的设计是建立在每个线程坐和“旋转”试图获得锁。除非每个工作线程都在执行工作,否则这种情况将持续发生,在这种情况下,锁将处于未获取状态,工作将发生。 由于所有线程都只是坐在一个锁上,在锁上旋转,您将需要相当多的CPU等待时间。考虑到您的设计,这在某种程度上是意料之中的。 您会发现,如果工作线程较少,那么阻塞的时间百分比可能会急剧减少—而且在工作项多于线程的情况下,您将花费很少的时间等待该锁。
|
2
0
你想用一把锁,多把锁吗?互斥?你在用什么? 我会从你的描述中猜测(这纯粹是猜测)你有类似的东西:
解决这个问题的一种方法是,从使用显式锁(如上所述)切换到使用有信号的互斥锁,当您希望其中一个线程获取工作时,互斥锁会被触发。 但是,如果没有看到您当前的实现,我不确定我是否可以超越这一点。 |
RoddyRott · 如何监视AWS中的线程 6 年前 |
John · 非阻塞http客户端与使用独立线程池的阻塞http客户端 7 年前 |
Yomal · 在java中,如何知道线程池的任务何时结束 7 年前 |
Hymir · 用于挂起线程的C++线程池 7 年前 |
WeInThis · Python-将线程转换为多处理 7 年前 |