2011-02-23 2 views
4

난 벡터 용기는 다음의 방법에 대한 뮤텍스 보호 된 액세스를 제공하는 동일한 프로세스의 두 개의 스레드간에 공유 될 필요동일한 프로세스에서 스레드 간 공유 저장소에 적합한 프로세스 간 컨테이너가 향상 되었습니까?

empty 
size 
erase 
push_back 

I 것 또한 동안 컨테이너를 잠금 반복자를 제공하는 컬렉션 등 반복자가 사용 중입니다. 본질적으로 나는 std::vector<...> 인터페이스를 가진 컬렉션을 찾고 있지만 동시 액세스 보호 기능이 있지만 아무 것도 찾을 수없는 것 같습니다.

boost::interprocess 용기가이 용도에 적합합니까? 그렇지 않은 경우, 더 적합한 대안이 있습니까? 아니면 직접 작성해야합니까?

답변

2

대답은 예입니다. 적합합니다. See here

+0

감사합니다. 첫 번째 단락에서 "Boost.Interprocess는 프로세스에서만 작동하지만 스레드에서는 작동하지 않습니다."라는 메시지가 나타납니다. 공유 메모리에 더 관심이있는 문서 (http://www.boost.org/doc/libs/1_46_0/doc/html/interprocess/allocators_containers.html)를 읽었습니다. – Tony

1

boost::interprocess 컨테이너가 제대로 작동하지 않으면 Intel TBB을 살펴볼 가치가 있습니다. 나는 최근에 그것을 사용하기 시작했으며 매우 기뻤습니다. 특히 tbb::concurrent_vector을 확인하십시오.