我正在创建一个多线程程序,在该程序中,我一次只想让一个线程进入临界区,该临界区创建一个套接字并发送一些数据,而其他所有线程都等待该变量清除。 / p>
答案 0 :(得分:1)
我将使用一个专用于发送的附加线程。在其他线程放置其发送数据的地方使用Queue。套接字线程以循环方式从队列中获取项目,然后将它们一个接一个地发送。
只要队列为空,.get
就会阻塞并且发送线程处于睡眠状态。
“生产者”线程根本没有等待时间,他们只是将其数据放入队列中并继续。
无需担心可能出现的死锁情况。
要停止发送线程,请在队列中放入一些特殊项目(例如,无)。
要启用返回值,请将元组(send_data, return_queue)
放在发送队列中。准备好结果后,将其放入return_queue
中即可返回。