Lý do bạn không thể mang bộ xử lý thời gian lát to a thread được chỉ định là Windows có ưu tiên lập kế hoạch hạt nhân trong đó khá nhiều nơi thuộc trách nhiệm và quyền hạn của lịch thời gian xử lý trong tay của hạt nhân và chỉ hạt nhân.
Vì các chủ đề như vậy không có bất kỳ kiểm soát nào khi chúng chạy, nếu chúng chạy và thậm chí ít hơn luồng nào được chuyển sang sau khi lát thời gian của chúng được tăng lên.
Tuy nhiên, có một vài cách bạn có thể ảnh hưởng đến bối cảnh chuyển mạch:
bằng cách tăng độ ưu tiên của một chủ đề nào đó bạn có thể lực scheduler để sắp xếp nó thường xuyên hơn trong gây thiệt hại cho chủ đề khác (rõ ràng là ngược lại cũng được áp dụng - bạn có thể giảm mức độ ưu tiên của các chủ đề khác)
bạn có thể mã quy trình của mình để đặt chuỗi ở chế độ đợi hạt nhân khi chúng không hoạt động đó là công việc. Khi sử dụng các cấu trúc chờ đợi thích hợp như các phần quan trọng, Mutexes, Semaphores và Timers, bạn có thể nói một cách hiệu quả hạt nhân rằng một luồng nhất định không cần phải được lên lịch cho đến khi một mã nhất định được đáp ứng.
Lưu ý: hiếm khi có một lý do bạn nên làm xáo trộn những ưu tiên nhiệm vụ nên sử dụng cẩn thận
Nguồn
2010-01-07 18:52:37
Thậm chí nếu bạn có thể làm điều này, nó sẽ là một ý tưởng rất tồi tệ. Bạn sẽ có hiệu quả viết lại lịch trình hệ điều hành bên trong ứng dụng của riêng bạn. Không tốt có thể đến từ cố gắng để làm như vậy ở điều! –
@All: đã đồng ý, việc này có thể dẫn đến tình huống mà các chủ đề khác (ví dụ: các chủ đề quan trọng của hệ thống) sẽ bị bỏ đói và là một ý tưởng tồi nói chung. @ChrisW, @dsolimano: Tôi đã nghĩ về các loại sợi, nhưng một sợi chỉ có thể lên lịch cho một sợi chạy trong ngữ cảnh của chuỗi lịch. Trong trường hợp cụ thể này, tôi cần thực thi mã của mình trên một chuỗi cụ thể (DirectX yêu cầu điều đó). @Miky, @Nikolai: cảm ơn đề xuất phương án thay thế - đó là những gì tôi đang tìm kiếm. –
Tôi đề nghị bạn cũng nên đọc về "các thói quen" cho nhiều lý thuyết và ý tưởng bất khả tri hơn trong lĩnh vực này, mặc dù tôi nghĩ rằng bạn có lẽ là tốt nhất khi gắn bó với các khái niệm Win32, và có lẽ chủ đề chứ không phải là sợi. – martinr