Tôi đang đọc và tìm hiểu về ThreadScheduler
và các bài viết xung quanh Công việc và đi qua chức năng ThreadPool.UnsafeQueueUserWorkItem
được sử dụng ở một trong số MSDN examples về Trình tự ThreadSchedulers. Trong MSDN description about UnsafeQueueUserWorkItem có một cảnh báo lớn rằng hàm có thể là lỗ hổng bảo mật và rằng "không truyền bá ngăn xếp cuộc gọi".UnsafeQueueUserWorkItem và chính xác "không tuyên truyền ngăn xếp cuộc gọi" nghĩa là gì?
Liên kết duy nhất là QueueUserWorkItem
- từ tên - dường như là "đối tác an toàn"? nhưng cũng không đề cập gì về việc gọi ngăn xếp.
Điều đó có nghĩa là gì để tuyên truyền ngăn xếp? Sao chép nó trước khi bắt đầu công việc? Tại sao một thread khác lại cần stack của thread đang gọi? Tôi sẽ giả định rằng họ bắt đầu với một ngăn xếp mới và trống. Sau khi tất cả, khi các chức năng thread trả về, nó không tiếp tục thực hiện các chức năng lập kế hoạch nhiệm vụ, phải không?
Ah, tôi hiểu. Rất thú vị. Bây giờ ... điều này có bất kỳ sự khác biệt hiệu suất khi _not_ chạy dưới bất kỳ môi trường bảo mật nào không? – Imi
Không phải cách hoạt động, kiểm tra CAS luôn được thực hiện. Stack đi bộ có một chi phí cố định phụ thuộc vào chiều sâu ngăn xếp. "Chi phí" là một từ lớn, chúng tôi đang nói về một số ít micro giây ở đây. Điều này không quan trọng chút nào cho đến khi bạn đang chạy * hàng ngàn * yêu cầu chuỗi TP mỗi giây. –
_Chúng tôi đang nói về một số ít micro giây ở đây Woah .. cảm ơn vì bình luận. Tôi tốt hơn hồ sơ của tôi tùy chỉnh thread scheduler prototyp ở đây sau đó. Tôi chắc chắn có thể _not_ sống với một cái gì đó trong khoảng "micro giây". – Imi