氪精大佬 2021-01-22 11:31 采纳率: 20%
浏览 11

python锁的问题threading.Condition()

问一下这个notify的问题,就是我现在有20个线程,然后我回调的时候都要加一把锁


 
if self.cond.acquire():

print('线程执行结束,即将创建新线程,等待中...')

self.cond.wait()

print('收到通知,正在创建新线程...')

param = self.param_list.pop()

self.cond.notify()

self.cond.release()

self.sub_tasks(param)

print('新线程创建成功!')

我现在没有通知任意一个线程通过一把锁,如果我在外部加一把锁的话由于执行时间原因可能会出现释放了锁但是其他锁才刚刚上锁的尴尬情况,比如第一个线程被解锁了,但是其他19个线程还在运行,没有到wait这里,那么第一个线程之后所做的notify就是无用的,这种怎么解决呢,看了一下很多文中的,都是先使用notify在使用wait的也就是说该线程在锁住之前都先通知一下其他锁解开一个锁,那么像我这种情况,10个线程同时notify通知咋办,是1、会等待通知呢还是说2、其中一个notify有效其余的都无效,或者3、同时通知其他锁(10个锁)解锁

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:07
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记