처음부터 시작하기 :작업 공장 힘 이상의 작업 내가이 같은 작업 뭔가 (의사)와 작업 공장 작성하고
private int _taskcounter;
싹둑
var factory = new TaskFactory();
for(var i = 0;i<1000;i++)
factory.StartNew(() => doWork());
싹둑를
private void doWork(){
Interlocked.Increment(ref _taskcounter);
//do some slow I/O work here
Interlocked.Decrement(ref _taskcounter);
}
이제는 _taskcounter를 보시면
이 처음 10 개 작업을 시작합니다. 하지만 대기열이 완료 될 때까지 1 ~ 2 작업/초를 시작합니다.
사소한 명백한 동작입니까, 아니요?
제 질문은 :
강제로 작업 공장이 시작시 더 많은 작업을 시작하도록하는 방법이 있습니까?
이미 과도한 메모리 소비를 방지하기 위해 일부 msdn 예제 클래스의 변형으로 실행중인 작업의 최대 값을 제한합니다.
또는이 재미있는 측정 방법이나 나의 고려 사항에 문제가 있습니까?
다른 스레드에서 모든 작업을 수행 할 필요가 없습니다. 공장을 사용할 필요가 없습니다.
저는 공장의 비 작동 도용 동작의 이점만 원합니다.
다른 모든 것들은 공장의 인텔리전스에 의존합니다.
왜 여러 작업을 한 번에 정확하게 시작 하시겠습니까? 그들이 뭐하고 있니? 여러 번 병렬로 작업하면 프로세스 속도가 빨라 집니까? – svick
확실히 그럴 것입니다. 필자는 이미 느린 TCP io 작업이라고 말했습니다. io 태스크는 하드웨어/네트워크 리소스가 응답하기를 99 % 기다리고 있으므로 프로세스를 병렬 처리하는 동안 속도 때문에 큰 영향을 미칩니다. –