2014-10-16 3 views
-2

스레드 목록에서 모든 스레드를 한꺼번에 호출하는 방법을 알려줄 수 있습니까?C에서 스레드의 Parallel.Invoke

실제로는 모든 스레드를 작성한 후에 목록에 저장했지만, th.start()th.join() 메쏘드를 사용하면 모든 스레드가 하나씩 시작됩니다. 한 번에 모두 시작하길 바래.

각 스레드의 시작 및 종료 시간을 보려면 time 함수를 사용했지만 그 중 일부는 동시에 시작하지 않았습니다. 이 같은

내가 시작하고 스레드 :

foreach (Thread st in threadss) 
{ 
    st.Start(); 
    st.Join(); 
} 

하지만이 같은를 시작하려면 :

Parallel.Invoke(() => st1.Start(),() => st2.Start(), .....); 

+4

왜 'Thread.Join'을 호출합니까? 나는이 패턴으로 쓰레드를 전혀 사용하지 않을 수도 있기 때문에 궁금하다. – Dirk

+2

더 중요한 것은 왜 자신 만의 스레드 풀을 만들어야하는지? TPL을 사용하지 않는 이유가 있습니까? –

답변

3

도와주세요 왜 .Start() 그 첫 번째, 다음 .Join() 그들? 잘 작동해야합니다.

foreach (var st in threadss) { 
    st.Start(); 
} 
foreach (var st in threadss) { 
    st.Join(); 
} 
관련 문제