我实现了我的Ubuntu服务器的简单的线程池机制(我的多客户端匿名聊天程序),我需要让我的工作线程睡眠,直到一个作业(在一个函数指针的形式和参数)需要执行。线程等待家长
我现在的系统正在走出窗口。我(工作者线程)向经理询问工作是否可用,以及是否有5ms没有睡眠。如果有,请将作业添加到工作队列并运行该功能。可怜的周期浪费。
我想像要做的是做一个简单的事件样的系统。我正在考虑有一个互斥量向量(每个worker都有一个向量),并且在创建时将互斥量的句柄作为参数传入。然后在我的经理类(它保存并分发作业)中,每当创建一个线程时,都会锁定该互斥锁。当需要执行任务时,解锁下一个互斥锁,等待它被锁定和解锁,然后重新锁定它。不过,我想知道是否有更好的方法来达到这个目的。
tldr;所以我的问题是这样的。让一个线程等待管理类工作的最有效,最有效和最安全的方法是什么?轮询我应该甚至考虑的技术(每次超过1000个客户端),互斥锁是否体面?还是有其他技术?
条件变量是一个互斥/信号量? – ultifinitus 2011-04-27 06:08:54
@ultifinitus:No.条件变量是线程代码中最低级别的基元(以及互斥体)。您可以从互斥/条件变量中构建信号量。 – 2011-04-27 06:28:54
哈哈谢谢!我感谢帮助!我喜欢'我把这当做锻炼的一部分。我会告诉你最终产品是如何工作的。 – ultifinitus 2011-04-29 13:19:13