![]() |
1
0
不要在设计代码时让互斥锁在所有或大部分时间都被保存。这就是导致你的公平问题的原因。 听起来你想要一个给一个线程优先级的锁,这样如果一个优先级线程正在等待锁,一个非优先级线程就会停止。做这项工作的线程应该使用非优先级锁定功能,这样任何等待的读卡器都会停止它。
请注意,即使非优先级线程持有锁,优先级线程也必须等到当前锁持有者释放锁后才能前进。这是你设计的结果,我强烈怀疑,这是不好的。线程不应该持有其他线程在做大量实际工作时可能需要的锁,而您的设计中需要的任何东西都应该重新考虑。 我不知道你的完整的外部设计,但是如果读线程只需要访问作业状态,那么看起来写线程应该能够在没有访问作业状态的情况下完成大部分真正的工作,并且应该只在更改该状态时持有锁,而不是在做真正的工作时。 |
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 8 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 8 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 8 月前 |
![]() |
András Takács · Python多线程问题 1 年前 |
|
András Takács · Python多线程错误 1 年前 |