我正在爲一個項目製作一個影院 - 預訂應用程序。我的影院包含10個運營商,因此每次只有10個客戶可以同時預訂。當一個客戶完成時,另一個與一個操作員連接。POSIX的條件增值稅
我建立了一個服務器 - 客戶端連接。每當有新客戶出現時,我正在創建一個新線程。現在我的問題是如何讓10個線程同時進行操作。我知道我必須使用條件變量,但不知道具體如何。
什麼是我的想法,當一個客戶端連接
lock mutex()
counter++;
if(counter > 10)
block thread() until an operator is free
else
do computations
unlock mutex()
我知道我必須使用cond_signal和cond_wait但我不知道究竟怎麼了。任何幫助?
這是一個提示:「塊線程」聽起來像「等待條件變量」。你應該能夠弄清楚「運營商是否免費」的含義。 (提示2:運營商變得自由了,因爲一些其他線程釋放了它,該線程可能應該表示條件變量)。 –
PS:在現實世界中(即不在家庭作業中),更有意義的是擁有10表示10個操作符的固定線程,並使隊列中的對象表示客戶端。 –