我目前正在構建一個用於內部使用的pthreads的瘦C++包裝。 Windows和QNX都是針對性的,幸運的是pthreads-win32端口似乎工作得很好,而QNX則符合POSIX的實際用途。pthread-win32擴展sem_post_multiple
現在,雖然實現信號燈,我打的功能
sem_post_multiple(sem_t*, int)
這顯然是隻在並行線程-win32的可以選擇,但是從QNX丟失。顧名思義,該函數應該通過作爲第二個參數給出的計數來增加信號量。據我所知,該函數不是POSIX 1b和POSIX 1c的一部分。
雖然目前沒有對上述功能的要求,但我還是想知道爲什麼pthreads-win32提供了這個功能,以及它是否有用。我可以嘗試使用類似下面的模仿它QNX:
sem_post_multiple_qnx(sem_t* sem, int count)
{
for(;count > 0; --count)
{
sem_post(sem);
}
}
我問什麼是如何進行的建議/意見。如果一致意見建議爲QNX實現該功能,那麼我還會對建議的代碼剪切是否是可行的解決方案表示讚賞。
在此先感謝。 PS:爲了清楚起見,我刻意忽略了我的花哨的C++類。對於所有建議提振救援的人士:由於管理方面的原因,這不是我目前項目的一個選擇。
這就是「管理」涉及技術決策時發生的事情...... :)如果你不需要它,你爲什麼要浪費時間來包裝它?對我來說,這個決定是明確的,跳過它...... – Nim 2010-12-02 22:00:36
的確,除非你確定你需要它,否則我會完全跳過包裝POSIX信號量。信號量是90年代(甚至更早?)同步的成語。 POSIX互斥鎖,條件變量,rwlocks和螺旋鎖在實踐中更加有用。 – 2010-12-02 23:54:53