Đọc thêm:
Tôi muốn trình bày một số bài báo của tôi, quan tâm đến các nguyên thủy đồng bộ hóa chung và họ đang đào sâu vào hành vi, thuộc tính và chi phí của câu lệnh khóa Monitor, C # tùy thuộc vào các kịch bản và số lượng luồng riêng biệt. Nó đặc biệt quan tâm đến thời gian lãng phí CPU và thông lượng để hiểu mức độ công việc có thể được đẩy qua trong nhiều trường hợp:
https://www.codeproject.com/Articles/1236238/Unified-Concurrency-I-Introduction
https://www.codeproject.com/Articles/1237518/Unified-Concurrency-II-benchmarking-methodologies
https: // www. codeproject.com/Articles/1242156/Unified-Concurrency-III-cross-benchmarking
Câu trả lời ban đầu:
Ôi chao!
Có vẻ như câu trả lời đúng được gắn cờ ở đây là CÂU TRẢ LỜI vốn dĩ không chính xác! Em xin tác giả câu trả lời, kính mong anh chị đọc bài đã liên kết đến cuối. bài báo
Tác giả của bài báo từ năm 2003 bài viết được đo trên chỉ máy Dual Core và trong trường hợp đo đầu tiên, ông đo khóa với chỉ một chủ đề duy nhất và kết quả là khoảng 50ns mỗi truy cập khóa.
Nó không nói gì về một khóa trong môi trường đồng thời. Vì vậy, chúng ta phải tiếp tục đọc bài báo và trong nửa sau, tác giả đã đo lường kịch bản khóa với hai và ba luồng, tiến gần hơn đến mức đồng thời của các bộ xử lý ngày nay.
Vì vậy, tác giả nói rằng với hai luồng trên Dual Core, các ổ khóa có giá 120ns, và với 3 luồng, nó lên đến 180ns. Vì vậy, nó dường như phụ thuộc rõ ràng vào số lượng luồng truy cập đồng thời vào khóa.
Vì vậy, nó rất đơn giản, nó không phải là 50 ns trừ khi nó là một sợi duy nhất, nơi ổ khóa trở nên vô dụng.
Một vấn đề khác cần xem xét là nó được đo bằng thời gian trung bình !
Nếu thời gian lặp lại được đo, thậm chí sẽ có thời gian từ 1 mili giây đến 20 mili giây, đơn giản vì phần lớn tốc độ nhanh, nhưng một số luồng sẽ đợi thời gian của bộ xử lý và gây ra sự chậm trễ thậm chí là mili giây.
Đây là tin xấu cho bất kỳ loại ứng dụng nào yêu cầu thông lượng cao, độ trễ thấp.
Và vấn đề cuối cùng cần xem xét là có thể có các hoạt động chậm hơn bên trong khóa và rất thường xuyên xảy ra trường hợp đó. Khối mã được thực thi bên trong khóa càng lâu thì sự tranh chấp càng cao và sự chậm trễ sẽ tăng cao.
Vui lòng xem xét, đã hơn một thập kỷ trôi qua kể từ năm 2003, có rất ít thế hệ bộ vi xử lý được thiết kế đặc biệt để chạy hoàn toàn đồng thời và việc khóa có hại đáng kể đến hiệu suất của chúng.