Ai đó có thể vui lòng giải thích sự khác biệt giữa mô hình luồng ưu tiên và mô hình luồng không ưu tiên?Chủ đề ưu tiên Vs Chủ đề không ưu tiên
Theo hiểu biết của tôi:
- mô hình luồng Non Preemptive: Khi một thread được bắt đầu nó không thể dừng lại hoặc điều khiển không thể được chuyển sang chủ đề khác cho đến khi thread đã hoàn thành nhiệm vụ của mình.
- Mô hình luồng ưu tiên: Thời gian chạy được phép điều khiển bằng tay và từ bất kỳ lúc nào. Chủ đề ưu tiên cao hơn được ưu tiên hơn các chuỗi ưu tiên thấp hơn.
Có thể ai đó xin vui lòng:
- Giải thích nếu sự hiểu biết là đúng.
- Giải thích những ưu điểm và nhược điểm của cả hai mô hình.
- Ví dụ về thời điểm sử dụng nội dung sẽ thực sự hữu ích.
- Nếu tôi tạo một chuỗi trong Linux (hệ thống v hoặc Pthread) mà không đề cập đến bất kỳ tùy chọn nào (có bất kỳ ??) theo mặc định, mô hình luồng được sử dụng là mô hình luồng ưu tiên không?
Chỉ cần lưu ý về yield(): không sử dụng nó trên Linux vì nó dẫn đến hiệu suất khủng khiếp. Một chuỗi được tạo ra sẽ được đẩy vào mặt sau của lịch trình luồng để chuỗi sẽ không được lên lịch cho đến khi mọi thứ khác trong toàn bộ hệ thống * đã có cơ hội. –
Trong sự hiểu biết của tôi khi quá trình chính tạo ra hai chủ đề, họ sẽ thực hiện song song. Vì vậy, "Không ưu tiên luồng mô hình" thực hiện việc thực hiện như thế, (finish_thread_1) -> (finish_thread_2) -> main()? Tôi có nghĩa là sau khi thread 1 hoàn thành thread 2 sẽ bắt đầu sau đó sau khi hoàn thành, main() phương pháp sẽ gọi. Điều này có đúng không? Nếu vậy thì việc sử dụng "Chủ đề không ưu tiên" là gì? – rakeshNS
@rakeshNS: các chủ đề không bắt buộc (hợp tác) có nghĩa là một luồng chạy cho đến khi nó gọi một số chức năng mà buộc/cho phép chuyển sang một luồng khác. Trong một số trường hợp, đó là một hàm 'yield' rõ ràng. Trong những trường hợp khác, cho phép các luồng khác chạy ẩn trong một số hàm khác.Ví dụ, trong Windows 16 bit, khi bạn gọi 'GetMessage', các luồng/quy trình khác có thể chạy (chúng được coi là các tiến trình, nhưng tất cả chúng đều dùng chung một không gian địa chỉ ...) –