tbb에 있는,
concurrent queue는 자주 썼었는데,
concurrent bounded queue는 뭐하는 물건인고 궁금해서 찾아보았음.
bounded queue (경계큐) - 용량을 지정 할 수 있는 큐
concurrent bounded queue(동시성 경계큐) - 용량을 지정하여 사용할 수 있는 멀티 쓰레딩 큐, 더이상 넣을 수 없거나 뺄 수 없으면 블락킹 된다. (try_push/pop 으로도 사용 가능)
vs
concurrent queue - 용량을 지정할 수 없고, 뺄 것이 없으면 실패한다. (애초에 pop 이라는 함수 자체가 없고, Try_pop 만 가능)
#include <iostream>
#include <tbb/concurrent_queue.h>
using namespace std;
int main(int argc, const char * argv[]) {
tbb::concurrent_bounded_queue<int> queue;
queue.set_capacity(5);
for(int i=0; i<5; ++i){
cout << "Push: " << i << endl;
queue.push(i);
}
int value;
for(int i=0; i<10; ++i){
queue.pop( value );
cout << "Pop : " << i << endl;
}
return 0;
}
/*
Push: 0
Push: 1
Push: 2
Push: 3
Push: 4
Pop : 0
Pop : 1
Pop : 2
Pop : 3
Pop : 4
- 이후 무한 블락 -
*/
bounded queue 라는 용어는 첨 들어봐서 조금 헷갈렸다.. ㅠㅠ
'Programming > C++ & Unreal' 카테고리의 다른 글
Xcode tbb 설치 (0) | 2020.12.06 |
---|---|
C++ 오브젝트풀 개선 with tbb (0) | 2020.12.05 |
직렬화 라이브러리 완성! (0) | 2020.02.24 |
C++ region (0) | 2020.02.20 |
C++ 메모리 덤프 (0) | 2020.02.07 |