lock-free

    1

    1답변

    내 로거 용 SPSC 큐가 아래에 있습니다. 확실히 일반용 SPSC 잠금 해제 대기열이 아닙니다. 그러나 사용 방법, 대상 아키텍처 등에 대한 많은 가정과 아래에 자세히 설명되어있는 몇 가지 허용되는 절충 사항을 고려하면 내 질문은 기본적으로 안전합니까/작동합니까? 그것은 단지 x86_64 아키텍처에 사용됩니다 , 그래서 원자 될 것 uint16_t에 기록

    1

    2답변

    I는 다음과 같습니다 간단한 설문 조사 프로세스 루프 병렬화에 직면하고 있습니다 : 문제가 발생 된 항목을 제외하고 단일 생산자/다중 소비자 패턴을 다음과 while(!done) buffer = poll(...) foreach(item i in buffer) process(i) 소비 할 필요가 을 by 모두 소비자. 구현이

    3

    1답변

    spsc_queue에서 Boost.LockFree까지 사용자 정의 유형과 함께 사용할 수 있는지 알고 싶습니다. 내가 모르는 예제에서, 나는 단지 atomic s 그리고 더 많은 것 atomic s를 본다. 예 : 그래서 boost::lockfree::spsc_queue<int, boost::lockfree::capacity<1024> > spsc_queu

    4

    1답변

    C++에서 "Simple Segregated Storage"메모리 풀의 잠금 해제 버전으로 작업하고 있습니다. SSS 메모리 풀은 슬랩 할당 자와 비슷합니다. 기본적으로 크기가 같은 블록으로 분할 된 메모리 덩어리이며 사용 가능한 첫 번째 블록을 가리키는 빈 목록 포인터가 있습니다. 할당은 단순히 포인터를 다음 블록으로 옮기는 것 뿐이며 할당 해제는 할당되

    0

    1답변

    boost :: lockfree :: queue는 할당 된 메모리를 해제하지 않습니다. 왜 프리리스트 노드가 OS로 반환되지 않습니까? 개별 콜렉션 객체의 소멸자가 호출됩니다. 난 lockfree 큐 메모리 할당에 대한 제안, 메모리 문제를 해결하고 싶습니다. 내가 여기서 뭐하고 있는거야? #include <iostream> #include <Window

    1

    1답변

    나는이 다음과 같은 대체하기 위해 C++에서 잠금이없는 데이터 구조를 찾고 있어요 :이 pthread_mutex_lock(plock); set.insert(element); pthread_mutex_unlock(plock); 세트가 가장 O (logN)의 복잡성에와 .insert() 및 .size()을 지원해야한다, 반복자를 가지고 있으며, 주문형

    0

    1답변

    lock free 부스트 도큐멘트 부분을 읽으면서, "고정 크기의 어레이를 사용하여 내부 노드를 저장합니다"라는 메시지가 표시되어 ABA 발행물이 32 비트 시스템에 저장되지 않도록하십시오. 어떤 부분은이 부분이 소스 코드에서 끝나는 힌트를 줄 수 있습니까? 부스트 프로젝트 전체가 나에게 너무 커. 감사합니다.

    1

    1답변

    나는 그런 대기열이 있습니다 boost::lockfree::spsc_queue<orders_log, boost::lockfree::capacity<8192>> futOrdersUpdates; 내 문제는 가끔 동일한 항목을 여러 번 양단 큐이다. 나는 몇 가지 문제 해결 코드를 추가 한 : while (bool dequeued = futOrdersUpda

    -1

    2답변

    이동중인 빈 채널이 내 실행을 차단하지 않는지 신뢰할 수있는 방법을 찾고 있습니다. 특정 순서 (우선 순위의 종류)로 여러 채널을 반복해야하고, 항목이있는 항목을 찾으면 읽습니다. 현재 나는 비슷한 방식으로 뭔가를 할 : 다른 채널이 될 준비가되어있는 항목이있을 수 있습니다 동안이, 대기의 너무 긴에 발생할 수 이론적으로 if len(myChannel) >

    7

    1답변

    그래서 우리는 지금 꽤 오래된 버전의 부스트를 사용하고 있습니다. 업그레이드하기 전까지는 코드에 C++로 원자 적 연산을 사용하기 위해 이 필요합니다.이 inline uint32_t CAS(volatile uint32_t *mem, uint32_t with, uint32_t cmp) { uint32_t prev = cmp; // This