23

TPL sử dụng Task Schedulers để phối hợp các nhiệm vụ. Theo official document, trình lập lịch tác vụ mặc định sử dụng Thread Pool, nhưng nếu tùy chọn TaskCreationOptions.LongRunning được trình bày thì nó sẽ tạo một chuỗi chuyên dụng cho nhiệm vụ đó (A).TaskCreationOptions.LongRunning tùy chọn và ThreadPool

Câu hỏi: Hiện tại, tài liệu MSDN cho Visual Studio 2010 chưa sẵn sàng và MSDN trực tuyến hiện tại chưa được hoàn tất; không ai biết nếu (A) là đúng hay sai?

+0

Bạn có thể cung cấp nguồn bê tông cho (A) không? –

+0

Đây là một văn bản thú vị trên tiêu đề này: http://download.microsoft.com/download/B/C/F/BCFD4868-1354-45E3-B71B-B851CD78733D/TPLOptionsTour.pdf –

Trả lời

36

Vâng, LongRunning buộc việc tạo ra một chủ đề mới bên ngoài hồ bơi. Dưới đây là một số mã giả tháo rời từ phiên bản framework mới nhất:

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

Edit: chuyển đổi từ xấu xí C# để giả.

+7

Reflectoring là loại thực hành được chấp nhận cho chính Fx ở đây. Nhưng nguy hiểm là: điều này có thể thay đổi trong một phiên bản tương lai. –

+1

@chiba: Tôi không thấy có vấn đề gì với Mau. Tôi nghĩ rằng nó rất hữu ích để xem việc tháo gỡ. 1 cho Henk là tốt. Điều này không được đảm bảo để được trên thread riêng của nó như là logic lịch trình có thể thay đổi. –

+1

@Scott Tôi nghĩ rằng bạn sẽ thấy rằng trong lý thuyết các chủ sở hữu của thư viện mà từ đó mã này đã được tháo rời có thể đưa ra một [thông báo lấy xuống] (http://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act#Takedown_example) đến trang web lưu trữ nó - vi phạm bản quyền. Vì vậy, nó thường không thực hành tốt. Tôi đang nghĩ đến hành vi tốt và SO ở đây. –

Các vấn đề liên quan