두 개의 사전 목록이 있습니다. 총 50 명의 사용자/스레드까지 스레드 당 한 명의 사용자를 쿼리합니다.스레드 안전 목록 또는 여러 목록 연결?
첫 번째 목록 인 "users"는 스레드 당 하나의 항목 만 포함합니다. 두 번째 목록 인 "items"에는 스레드 당 수천 개의 항목이 포함될 수 있습니다 (300은 양호한 평균 임).
현재로서는 단일 스레드에서 순차적으로 사용자를 쿼리합니다. 첫째, 한 사용자의 데이터가 수집됩니다 (동기식으로 구현되며 ~ 100ms의 일반 대기 포함). 그러면 사용자가 "사용자" 한 번에 하나씩 모든 항목이 처리되고 "항목"에 추가됩니다 (처리에는 1000 개의 항목에 대해 약 12 밀리 초가 소요됨).
목록이 정렬되어 있지만 순서를 전혀 유지하지 않아도됩니다.
- 첫 번째 목록은 ConcurrentBag을위한 좋은 장소입니다 다음과 같이
는 지금은 생각했다.
- 두 번째 목록의 경우 스레드마다 하나씩 여러 목록을 사용하는 것이 더 좋습니다. 끝에는 함께 연결됩니다.
그러나이 절차를 진행하기 전에 이것이 최선의 방법인지 또는 더 나은 해결책을 생각할 수 있는지 묻고 싶습니다. 병렬화 할 부분에서 두 목록 중 아무 것도 수행하지 않고 항목 추가 만 수행합니다.
스레드 당 한 명의 사용자를 쿼리하는 특별한 이유가 있습니까? 응용 프로그램의 설정/디자인을 알지 못하면 다중 스레드가 아닌 다른 이유로 스레딩이 많이 발생합니다. – Joeb454
@ Joeb454 각 사용자의 데이터가 다른 엔드 포인트에 저장 될 수 있기 때문에 우리가 조회하는 원래 API (다른 벤더의)의 설계로 인해 호출 당 한 명의 사용자 만 요청할 수 있습니다. – Alexander