T BlockingQueue<T>::pop() {
pthread_mutex_lock(&lock);
if (list.empty()) {
pthread_cond_wait(&cond) ;
}
T temp = list.front();
list.pop_front();
pthread_mutex_unlock(&lock);
return temp;
}
以上是基於基礎鏈接列表和pthreads的模板化併發阻塞隊列定義的彈出操作。我的問題:我們可以通過哪些方式進一步優化此代碼?優化阻塞隊列實現的建議
題外話,但你應該把鎖/解鎖包裝到一個類中。查閱SBRM/RAII。在主題上,看起來像進一步的改進只能通過一個無鎖隊列找到。 – GManNickG 2010-10-29 14:38:27
@GMan - 當鎖被鏈接到條件變量時,RAII隱喻是否仍然有效?只是好奇... – 2010-10-29 14:41:37
@GMan - 不用擔心,在這裏找到我的答案:http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html – 2010-10-29 14:43:48