我想實做thread的共用佇列用來給multithreading的程式交換資料,於是上網查了一下,決定參考以下網址的做法https://www.educba.com/c-thread-safe-queue/
其中有一段是 if (currSize == 1u) cvPop.notify_one();
用來喚醒其他被wait()阻塞的thread,
但if的條件看不太懂為什麼是等於1 unsigned int就執行notify_one()
想請問有人知道這是什麼意思嗎??
另外想請問為什麼currSize每多增加一個元素是加1,而不是加資料結構的實際大小
notify_one
通知是因為 pop
的實作中會在 queue 為空時用 wait
block 住自己,所以當 queue 裡至少有一個元素時應該要喚醒一個被 wait
block 住的 pop
currSize
看來是在紀錄目前 queue 中有幾筆資料,因此是 +1 -1