하나의 스레드가 연결된 목록에 쓰고 다른 스레드가 연결된 목록을 처리하도록하여 속도를 높이려고합니다.닷넷에서 스레드 우선 순위를 낮추십시오.
어떤 이유로 링크 된 목록에 쓰는 방법으로 링크 된 목록에서 우선 순위가 낮은 스레드를 읽는 메서드와 작업으로 만드는 경우 프로그램이 훨씬 빠르게 완료됩니다. 할 때 즉 내가 fastests 결과를 experiense :
Task.Factory.StartNew(AddItems);
new Thread(startProcessingItems) { Priority = ThreadPriority.Lowest }.Start();
while(completed==false)
Thread.Sleep(0);
아마 첫 번째 작업은 내가 두 번째 방법을 낮은 우선 순위를 설정하면 전반적으로 모든 것이 빠르게 완료됩니다 왜 다른 스레드에 비해 너무 많은 추가 작업을하고 있기 때문에 .
는 어쨌든 지금은 내 질문에 ThreadPriority = 최저와startProcessingItems
실행됩니다. 가장 높은 우선 순위로 변경하려면 어떻게해야합니까? 해당 메서드에서 새 작업을 만들면 낮은 우선 순위로 실행됩니까? 기본적으로 startProcessingItems는 목록으로 끝나고 그 목록이 있으면 가장 우선 순위가 높은 실행을 시작하려고합니다.
자물쇠를 사용하는 항목을 추가하거나 제거 할 때마다 listLock이라는 자물쇠가 있습니다. 하지만 대신 blockingCollection을 사용하겠습니다. +1 감사합니다 –
@TonoNam Locking은 경쟁 조건 문제를 해결할 수 있지만 BC가 훨씬 뛰어납니다. 새로운 Concurrent 컬렉션은 대부분의 경우 일반 컬렉션을 잠그는 것보다 훨씬 뛰어납니다. –
고마워요. 나는 다른 어떤 장소보다 여기에서 더 많이 배운다. –