많은 양의 Task 인스턴스를 만들었습니다. 나는 그들 모두를 실행해야하고, 그들 모두가 끝날 때까지 기다려야한다. 문제는 주어진 시간에 X 작업이 "시작"과 "완료"사이에 있는지 확인해야한다는 것입니다. 작업에는 동시 통화 수에 제한이있는 다른 당사자에 대한 통화가 포함됩니다. 이러한 제한은 내 하드웨어를 기반으로하지 않기 때문에 인텔리전트 스로틀 링에 의존하지 않습니다. 한계를 엄격히 집행해야합니다. 스레드가 안전한 방법으로 공유 변수를 증가 및 감소시키는 작업을 수행함으로써이 작업을 수행 할 수 있었지만, 불필요하게 번거로운 것으로 보입니다. API에 직접 내장 된 방법이 있습니까? 아니면 누락 된 동기화 도구가 있습니까?많은 .NET Task 인스턴스를 조정하는 가장 좋은 방법은 무엇입니까?
답변
당신은 How to: Create a Task Scheduler That Limits the Degree of Concurrency
편집을 참조 자신의 작업 스케줄러를 만들 필요가 : 이것은 세마포어보다 더 많은 코드를 필요로하지만 스레드 풀이하는 작업이 실행되기 때문에 나는이 더 잘 수행 할 수 있다는 느낌이 당신의 세마포어를 모르지만, TaskScheduler를 사용하는 것은 그들의 규칙에 따라 놀고 있습니다.
편집 2 : 세마포어를 사용 가능 단점의 하나는 스레드 풀은 당신의 작업이 IO 작업을하고 있다고 생각하고 (한 번에 많이을 예약 할 수 있습니다 그들이 거기에 걸 그들이 '돈 때문에, 잠깐 있도록 t CPU 필요). TaskScheduler를 사용하면 작업 스케줄러가있을 때 정확하게 스케줄됩니다. 확실히 수영장 청소기를 유지합니다.
세마포어 클래스는 당신을 위해 작동 할 수 있습니다 : http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx는
사용 방법을 보여이 MSDN 페이지에 좋은 예입니다.
같은 목적을 달성하는 데 사용할 수있는 더 가벼운 기본 제공 스레드 풀링/동기화 메커니즘이있을 수 있지만 세마포는 기본적으로 사용자가 요구하는 것을 수행하도록 설계되었습니다.
.net 4.0 및 Semaphore에 대해 이야기하는 경우 SemaphoreSlim을 살펴 보는 것이 좋습니다. http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx – Andrey
- 1. 많은 사용자가 EC2 인스턴스를 제어하는 가장 좋은 방법은 무엇입니까?
- 2. .NET 코드 리팩토링, 가장 좋은 방법은 무엇입니까?
- 3. BitmapData 객체의 크기를 조정하는 가장 좋은 방법은 무엇입니까?
- 4. Photoshop에서 이미지의 대비 수준을 조정하는 가장 좋은 방법은 무엇입니까
- 5. 이미지의 품질을 잃지 않고 크기를 조정하는 가장 좋은 방법은 무엇입니까?
- 6. 동적으로 페이지 크기를 조정하는 가장 좋은 방법은 무엇입니까?
- 7. 마우스로 요소 크기를 지속적으로 조정하는 가장 좋은 방법은 무엇입니까?
- 8. 보기에서 비트 맵의 크기를 조정하는 가장 좋은 방법은 무엇입니까?
- 9. 해상도에 따라 양식/컨트롤의 크기를 조정하는 가장 좋은 방법은 무엇입니까?
- 10. 많은 JavaScript 객체를 인스턴스화하는 가장 좋은 방법은 무엇입니까?
- 11. 여러 설정 파일 인스턴스를 처리하는 가장 좋은 방법은 무엇입니까?
- 12. EC2 인스턴스를 HAProxy에 자동으로 가입시키는 가장 좋은 방법은 무엇입니까?
- 13. 많은 양의 데이터를 SQL Server Express에로드하는 가장 좋은 방법은 무엇입니까
- 14. 내용이 많은 XML 파일을 표시/탐색하는 가장 좋은 방법은 무엇입니까?
- 15. Objective-C에서 클래스 인스턴스를 추적하는 가장 좋은 방법은 무엇입니까?
- 16. Apache Tomcat에서 여러 애플리케이션 인스턴스를 실행하는 가장 좋은 방법은 무엇입니까?
- 17. 이미지의 크기를 조정하는 더 좋은 방법은 무엇입니까?
- 18. 부두 인스턴스를 다시 시작하는 가장 좋은 방법
- 19. 많은 레일 동일한 플래그가있는 모델입니다. 가장 좋은 방법은 무엇입니까?
- 20. Android에서 MapView에 많은 오버레이를로드하는 가장 좋은 방법은 무엇입니까?
- 21. 많은 양의 텍스트 데이터를 저장하는 가장 좋은 방법은 무엇입니까?
- 22. 많은 양의 다른 유형의 데이터를 저장하는 가장 좋은 방법은 무엇입니까?
- 23. 코드에서 많은 텍스트를 관리하고 번역을 지원하는 가장 좋은 방법은 무엇입니까?
- 24. 많은 CSS 스타일 정의를 상황에 맞는 가장 좋은 방법은 무엇입니까?
- 25. 매우 많은 수의 객체를 메모리에 저장하는 가장 좋은 방법은 무엇입니까?
- 26. UIScrollView에 많은 양의 텍스트를 추가하는 가장 좋은 방법은 무엇입니까?
- 27. 장고 모델에서 많은 부울을 나타내는 가장 좋은 방법은 무엇입니까?
- 28. 많은 이미지 리소스를 처리하는 가장 좋은 방법은 무엇입니까?
- 29. 많은 유형의 옵저버 패턴을 구현하는 가장 좋은 방법은 무엇입니까?
- 30. 많은 확인란 입력을 데이터베이스에 삽입하는 가장 좋은 방법은 무엇입니까?
세마포어는 훌륭한 해결책입니다. –