2013-07-23 2 views
-2

현재 기본적으로 무한 루프를 수행하고 웹 요청을하는 콘솔 앱이 있습니다.멀티 스레딩 콘솔 앱 문제 C#

하지만 어떤 멀티 스레딩 라이브러리가 좋을지 알고 싶었습니다.

그래서 현재 루프가 웹 요청을 받고 Mongo 데이터베이스에 결과를 채 웁니다. 이것은 각 요청에 대해 수행되어야합니다.

어떤 접근 방식이 이상적일까요?

조언이 도움이 될 것입니다.

감사

+0

System.Threading.Thread가 좋습니다. –

+3

@ HanletEscaño : 아니오; 그렇지 않습니다. TPL을 사용하십시오. – SLaks

+0

실제로는 스레드가 아닌 비동기를 원합니다. – SLaks

답변

1

당신은 단지 잠재적으로 스레드의 최대 수를 설정 Parallel.ForEach 사용하고, 전체 컬렉션을 통해 작업을 실행할 수 있습니다.

멀티 스레딩을 사용하려면 공유 데이터에 대한 액세스를 동기화해야합니다.

즉,이 시나리오에서 대부분의 시간은 IO를 기다리고 있습니다. 따라서 비동기 메서드 호출을 사용하면 스레드가 여러 스레드를 불필요하게 차단하므로 작업을 스레드하는 것보다 낫습니다. MSDN은 사용하기에 좋은 Walkthrough on Accessing the Web using Async and Await을 가지고 있습니다.

+0

건배하겠습니다. 내가 parallel.for를 시도했을 때 Webrequests 및 응답이 완료되지 않아서 문제가 발생했습니다. 그러나 링크를 살펴볼 것입니다. – tjhack