Sev*_*Sev 5 python multithreading
多线程应用程序的主要挑战是协调共享数据或其他资源的线程.为此,线程模块提供了许多同步原语,包括锁,事件,条件变量和信号量.
虽然这些工具功能强大,但较小的设计错误可能导致难以重现的问题.因此,任务协调的首选方法是将对资源的所有访问集中在一个线程中,然后使用Queue模块向该线程提供来自其他线程的请求.使用Queue.Queue对象进行线程间通信和协调的应用程序更易于设计,更易读,更可靠.
它基本上表示使用Queue.Queue进行线程间通信和协调,而不是使用信号量,锁等功能强大的工具.
我的问题是,建议的方法有什么缺点?何时应该使用更"强大的工具",为什么?
编辑
要清楚,我知道信号量是什么.我只是想知道为什么Python文档建议使用Queue.Queue方法而不是"强大的工具" - 我只是使用文档自己的措辞,而不是我自己的.
正如你所说,我不确定我会考虑信号量并锁定"更强大的方法".
队列通常是高阶抽象.换句话说,您可以使用信号量和锁来构建线程安全的队列.
您在哪里使用取决于您的应用程序.队列适合在线程和进程之间传递"工作",而信号量/锁定对于保护关键部分或共享资源很有用,因此一次只能访问一个线程.