3
所以我的Enqueue和Dequeue函數如下。我如何採取我所擁有的並使其線程安全?我想過使用Windows.h中的互斥鎖,但如果可能的話,我不想將我的程序限制爲僅限Windows。如何使線程安全的循環隊列?
void Queue::Enqueue(int num){
//increase recorded size
size++;
//stick in num
numbers[nextSpace] = num;
//find the next available space
nextSpace = (++nextSpace) % maxSize;
}
int Queue::Dequeue(){
int temp;
temp = items[curSpace];
curSpace = (++curSpace) % maxSize;
size--;
return temp;
}
爲什麼另起爐竈?使用Boost的'lockfree :: queue'或類似的東西。 (或'spsc_queue',相反,如果你想要一個消費者和一個生產者的循環緩衝區。) –
Boost有一個可移植的同步庫。請參閱http://www.boost.org/doc/libs/1_53_0/doc/html/thread/synchronization.html –
您需要什麼版本的「線程安全」? STL是線程安全的,你知道嗎? –