24

TPL은 작업 스케줄러를 사용하여 작업을 조정합니다. 에 따르면공식 문서, 기본 작업 스케줄러는 스레드 풀을 사용하지만 ifTaskCreationOptions.LongRunning옵션이 표시되면 해당 작업 (A) 전용 스레드가 생성됩니다.

질문 : 현재 Visual Studio 2010 용 MSDN 문서는 준비가되어 있지 않으며 현재의 온라인 MSDN은 완성되지 않았습니다. 누구도 (A)가 참인지 거짓인지 안다.


2 답변


36

예,LongRunning풀 외부에 새로운 스레드를 생성합니다. 다음은 최신 프레임 워크 버전의 일부 의사 해체 코드입니다.

...
if (task.Options HasFlag LongRunning) then
    create new Thread thread
    thread.Start(task)
...

편집 : 못생긴 C #에서 의사 코드로 변환됩니다.


  • 리플 렉터 링은 Fx 자체에 대해 허용되는 방식입니다. 그러나 위험은 다음과 같이 바뀔 수 있습니다. - Henk Holterman
  • @cha : Mau와 관련된 문제는 표시되지 않습니다. 해체를 보는 것이 도움이된다고 생각합니다. 헨크에게 +1. 스케줄러 논리가 변경 될 수 있기 때문에 자체 스레드에있을 수는 없습니다. - Scott P
  • @Scott 나는이 코드가 해체 된 라이브러리의 소유자가 이론적으로 다음을 발견 할 수 있다고 생각합니다.테이크 다운 통지그 사이트를 호스팅 한 웹 사이트 (저작권 침해)로 일반적으로 좋은 습관이 아닙니다. 좋은 행동을 생각하고 있습니다. 여기에 있습니다. - Tim Lloyd
  • @Chibacity 그럼 문제는 어떻게 구현되는지에 관한 질문이었습니다. 최종 문서 페이지에는 여기에 언급 된 내용보다 더 자세히 설명되어 있어야합니다. 게다가 아무도 그처럼 if 조건을 작성하지 않기 때문에 실제 소스 코드가 아님을 알 수 있습니다. 어쨌든, 의사 코드에 대한 대답을 변경하십시오. - Mau
  • @chibacity : "공정 사용"과 같은 개념이 있습니다. 원래 버전이 완전히 합법적 일 수도 있습니다. 그러나 우리 중 누구도 [미국] 저작권법 전문가는 아니라고 생각합니다. - Henk Holterman

14

아마도 "Thread.IsThreadPoolThread"를 사용하여 이것을 확인할 수 있습니다 :

http://msdn.microsoft.com/en-us/library/system.threading.thread.isthreadpoolthread.aspx


  • 그냥 LongRunning 옵션을 사용하여 속성을 false로 시도했습니다. - Henk Holterman
  • @Henk 우수 - "LongRunning"을 사용하면 "Thread.IsThreadPoolThread = false"입니다. 건배. - Tim Lloyd

연결된 질문


최근 질문