다음은 시나리오입니다. 메인 스레드는 카운터를 업데이트 할 N 작업자 스레드를 생성합니다 (각 스레드가 처리하는 요청 수를 계산 중임).각 스레드에 의해 업데이트 된 전역 배열 저장 카운터. 필요시 카운터를 읽는 주 스레드?
총 카운터는 API 요청의 주 스레드가 읽어야합니다.
그래서처럼 설계의 생각 : 카운터의
1) 글로벌 해시 맵/배열/연결 목록을.
2) 각 작업자 스레드는 스레드 ID를 키로 사용하여이 글로벌 구조에 액세스하므로 하나의 작업자 스레드를 다른 스레드에서 보호하는 데 필요한 뮤텍스가 없습니다.
3) 그러나 어려운 부분은 다음과 같습니다. 온라인에서 찾을 수있는 예제가 없습니다. 메인 스레드가 요청시 모든 카운터 값을 읽고 요약하여 API 요청을 처리 할 수있게하려고합니다. 뮤텍스가 필요 하겠지?
전역 배열을 업데이트하기 전에 뮤텍스를 잠그는 작업자 스레드 뮤텍스가 필요합니다. 각 작업자 스레드가 주 스레드와 만 경쟁 할 경우 주 스레드가 제공 될 때만 뮤텍스가 실패합니다 API 요청
주 스레드 : API 요청을 받으면 작업 스레드 별 뮤텍스를 하나씩 잠그고 해당 스레드의 카운터를 읽고 총 개수를 가져와야합니다.
내가 이것을 과장 시켰습니까? 나는이 설계에서 per-worker-thread 뮤텍스를 요구하지 않는다.
입력 해 주셔서 감사합니다.
뮤텍스 _ 네가 _ 네가됩니다. –
아무 것도 지나치게 복잡하지 않습니다. 적절한 다중 스레드 설계는 복잡합니다. –