3
.NET 작업 병렬 라이브러리는 차단 작업에서 작업을 어떻게 처리합니까? C++ Concrt 라이브러리에 Context::Oversubscribe
메소드가 있지만 .NET 라이브러리에서 그런 것을 찾지 못했습니까? LongRunningTask
옵션이 차단 작업을 처리하는 해당 방법입니까?작업 병렬 라이브러리 - 차단 작업?
.i.e : C++에서 당신이 할 것 :
auto my_task_func = []
{
//Do work...
Context::Oversubscribe(true);
// Short or long blocking op.
Context::Oversubscribe(false);
//Do more work.
}
'ThreadPool'(뒤에서 TPL에 의해 사용됨)은 스레드 중 하나가 블로킹을 시작했다는 알림을 수신하고이 정보를 사용하여 새 스레드를 생성 할시기를 결정합니다. – svick
svick, 좋은 의견입니다. 나는 또한 이것이 문서화되지는 않았지만 사실이라고 생각한다. 지금 당장은 그 참조를 찾을 수없는 것 같습니다. – usr
실제로 문서인지 여부는 모르지만 C# *, 3rd edition, 759 페이지를 통해 * CLR입니다. "그러나 이러한 스레드 중 임의의 스레드가 자발적으로 차단되면 [...] Windows는 스레드 풀에 스레드 풀 중 하나 threads가 실행을 중지했습니다. 이제 스레드 풀은 [...] 차단 된 스레드를 대체 할 새 스레드를 만듭니다. " – svick