【发布时间】:2014-02-06 18:42:26
【问题描述】:
我正在为一个项目制作剧院预订申请。我的剧院有 10 个接线员,所以每次只有 10 个客户可以同时预订。当一个客户端完成后,另一个客户端与操作员连接。
我已建立服务器-客户端连接。每次出现新客户时,我都会创建一个新线程。现在我的问题是如何让 10 个线程同时进行操作。我知道我必须使用条件变量,但不知道具体如何。
每当客户连接时,我的想法是什么
lock mutex()
counter++;
if(counter > 10)
block thread() until an operator is free
else
do computations
unlock mutex()
我知道我必须使用 cond_signal 和 cond_wait,但我不知道具体如何。有什么帮助吗?
【问题讨论】:
-
这里有一个提示:“阻塞线程”听起来像“等待条件变量”。您应该能够自己弄清楚“操作员是免费的”是什么意思。 (提示 2:如果其他线程释放了运算符,则运算符变为空闲。该线程可能应该发出条件变量的信号。)
-
P.S.:在现实世界中(即不是在家庭作业中),让 10 个固定线程代表 10 个操作员并让客户端由队列中的对象代表可能更有意义。
标签: c multithreading posix