![]() |
1
6
|
![]() |
2
2
看起来你想要一个 threading.Semaphore 与每个处理程序关联(其他同步对象,如事件和条件也是可能的,但信号量似乎最简单,以满足您的需要)。(具体来说,使用 BoundedSemaphore :对于您的用例,这将立即引发一个异常,因为编程错误错误错误地释放信号电话的次数超过了它们获取的次数——这正是 有界的 Semanphone的版本;-)。
将每个信号量初始化为值
当你使用信号灯时,你是安全的(语义 是 安全可靠:如果信号量初始化为n,则始终有0到n-1[[包含]]个线程成功获取信号量,但尚未释放它)。 |
![]() |
3
0
您确实意识到Python有一个巨大的锁,所以您无法获得多线程的大部分好处,对吧? 除非主线程对每个工作线程的结果做了一些处理,否则您可能希望考虑为每个请求分叉另一个进程。那么您就不必处理锁定问题了。让孩子们做他们需要做的,然后死去。如果它们确实需要进行通信,那么可以通过管道、xmlrpc或通过sqlite数据库(即threadsafe)进行通信。 |
![]() |
a a · 为什么在这个可重入锁示例中需要引用计数? 3 年前 |
![]() |
JohnLBevan · 为什么原子语句上需要锁提示? 7 年前 |
![]() |
Jay Wang · 生产者/消费者实施:陷入消费者循环 7 年前 |
![]() |
Andremoniy · 悲观写入是否锁定整个表? 7 年前 |
![]() |
Marcus Cemes · 选择。。。用于更新在提交后选择旧数据 7 年前 |
![]() |
Ins0maniac · Rails,锁定数据库中的记录 7 年前 |