Tôi sẽ phải tạo một phần mềm đồng thời tạo nhiều nhiệm vụ và mỗi tác vụ có thể tạo ra một nhiệm vụ khác. .).Làm thế nào để chờ đợi trên tất cả các tác vụ (tạo nhiệm vụ và nhiệm vụ phụ) mà không sử dụng TaskCreationOptions.AttachedToParent
Tôi cần cuộc gọi đến phương thức khởi chạy tác vụ đang chặn: không trả về TRƯỚC KHI tất cả nhiệm vụ và nhiệm vụ phụ được hoàn thành.
Tôi biết có là tài sản TaskCreationOptions.AttachedToParent
này, nhưng tôi nghĩ rằng nó sẽ không phù hợp:
Các máy chủ sẽ có một cái gì đó giống như 8 lõi ít nhất, và mỗi công việc sẽ tạo ra 2-3 công việc phụ, vì vậy nếu tôi đặt AttachedToParent
tùy chọn, tôi đã ấn tượng rằng nhiệm vụ phụ thứ hai sẽ không bắt đầu trước khi ba nhiệm vụ của subtask đầu tiên kết thúc. Vì vậy, tôi sẽ có một đa nhiệm hạn chế ở đây.
Vì vậy, với cây quá trình này:
Tôi đã ấn tượng rằng nếu tôi đặt AttachedToParent mọi tài sản tôi khởi động một thread, B sẽ không kết thúc trước E, F, G đã kết thúc, vì vậy C sẽ bắt đầu trước khi B kết thúc, và tôi sẽ chỉ có 3 hoạt động chủ đề thay vì 8 tôi có thể có.
Nếu tôi không đặt thuộc tính AttachedToParent, A sẽ được hoàn thành rất nhanh và trả về.
Vậy làm cách nào tôi có thể thực hiện để đảm bảo rằng tôi luôn sử dụng 8 lõi nếu tôi không đặt tùy chọn này?
Đừng dựa vào ấn tượng. Hoặc tìm trong tài liệu hoặc tự mình thử. – svick