나는이 웹 소켓에 std::queue
에 대한 boost::lockfree::queue
을 대체하기 위해 노력하고있어 ++ 예를 https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp은 boost :: lockfree :: queue가 C++ 11에서 lockfree가 아닌가?
가 정말 아직 boost::unique_lock
라인을 제거하는 구문을 변경하지 않고 할 수있는 것 같습니다. 내가 부스트 예를 볼 때
그러나, 내가 lockfree::queue
의 문서를 통해 볼 때 lockfree http://boost-sandbox.sourceforge.net/doc/html/lockfree/examples.html
를 확인하는 코드 섹션을 가지고, 그것은 is_lock_free()
http://boost-sandbox.sourceforge.net/doc/html/boost/lockfree/queue.html에이 말한다 :
bool is_lock_free (void) const; 그것은 단지 확인
경고
, 큐의 머리와 꼬리 노드와 가능리스트가 잠금이없는 방식으로 수정 될 수있는 경우. 대부분의 플랫폼에서 전체 구현은 사실이라면 잠금이 없습니다. C++ 0x 스타일의 어 그리틱을 사용하면 운영 체제에서 추가 노드가 할당되는 경우 불가능한 모든 내부 노드 을 테스트해야하기 때문에 완전히 정확한 구현을 제공 할 가능성이 없습니다.
: 구현이 lock-free 인 경우 true를 반환합니다.
"C++ 0x- 스타일 원자"가 무엇인지 전혀 알지 못하지만 저는 C++ 0x가 C++ 11이라는 것을 확신합니다.
저는 C++ 11을 사용하고 있습니다. std::queue
을 boost::lockfree::queue
으로 대체하기 만하면 lockfree가 구현되지 않을까요?
잠금 해제 알고리즘을 사용하기 전에 측정을 권장합니다. 깔끔하지만 _scalable_ 및 _safe_ (즉, 우선 순위 반전 방지)로 설계되었습니다. 성능은 덜 우려스럽고 일반적으로 더 나쁩니다. 예를 들어, Boost의 lock-free 대기열 구현은 여러 코어와 많은 양의 경합이 없으면 잠긴'std :: queue'보다 느립니다. –
'C++ 0x- 스타일 원자력이란 "[boost :: atomic] (http://www.boost.org/doc/libs/1_53_0_beta1/doc/html/atomic)에 대한 이야기입니다. html). –
+1 lib 예제 – ExoticBirdsMerchant