C# 스레드 반복 처리시 cpu 점유율 문의

일단 숙지하셔야 할 것이 하나 있는데, 백그라운드에서 아무리 병렬 처리를 잘 한다고 해도 결국 이것을 표시하는 UI는 스레드 하나로 모든 것을 처리하게 됩니다. 그래서 UI에 데이터를 표시하는 것과 다른 스레드가 실행되는 것을 분리해서 프로그래밍하셔야 할 것 같습니다. 다중 스레드를 이용할 때에는 서로 다른 스레드 간에 "기다리는 일"을 만들지 않는 것이 성능에서 중요한 핵심입니다.

어떤 목적이나 요구 사항을 가지고 프로그래밍하는지는 알 수 없어 부정확한 답변이 될 수 있는 점을 먼저 말씀드립니다.

저라면 말씀하신 상황에서 동시성 처리를 보장하는 ConcurrentQueue를 이용해서 백그라운드 스레드는 온전히 자신이 처리할 입력만 받고, UI에 표시할 최종 결과는 volatile 키워드를 이용해서 잠금 없이 즉시 데이터를 읽거나 쓸 수 있도록 구성하는 방식을 사용할 것 같습니다.

4개의 좋아요