버그 해결을 위한 모든 질문을 던져
0 votes
162 views

안녕하세요. C#으로 프로그래밍을 하고 있습니다.

Thread간 데이터를 전달하기 위해서 ConcurrentQueue를 사용하고 있습니다.

ConcurrentQueue객체를 5개 이상 생성한 후 동시에 Dequeue를 할 경우 맨 처음에 Dequeue를 할 경우 5번째부터 1000ms씩 걸리더라고요.

한번 Dequeue를 한 후부터는 빠르게 동작합니다. (그래서 큰 문제는 되지 않으나... 테스트가 불편하군요. ㅠㅠ)

혹시 원인이나 해결 방법을 아시는분 계시면 답변 부탁드리겠습니다.

파일이 안올라가서 아래 링크는 샘플 프로젝트가 올려져 있는 글입니다.

https://blog.naver.com/jusias/221458134027

asked (6 point) , 162 views

1 답변

0 votes
Task가 ThreadPool을 사용하면서 생기는 문제였습니다.

ThreadPool 오브젝트 개수보다 많은 Task를 생성할 경우 새로운 Task를 생성하는데 시간이 소요되는 듯.

단지 Dequeue를 해주는 Task가 생성, 실행될 때 느린게 아니라 Dequeue를 할 때에 딜레이가 생기는 것에 대한 의문이 남아 있긴 합니다.

 

해결방법은 ThreadPool을 사용하지 않는 Thread를 사용하거나 ThreadPool.SetMinThreads함수를 이용하여 최소 Threads개수를 변경하면 됩니다.
answered (6 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

132 질문
224 answers
258 댓글
247 users