Ôi trời ơi!
Có vẻ như câu trả lời đúng được gắn cờ ở đây vì TRẢ LỜI vốn đã không chính xác! Tôi muốn hỏi tác giả câu trả lời, trân trọng, để đọc bài báo liên kết đến cùng.article
Tác giả của bài báo từ năm 2003 article đượ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ủ đề duy nhất chỉ và kết quả là khoảng 50ns mỗi truy cập khóa.
Nó không nói gì về khóa trong môi trường đồng thời. Vì vậy, chúng tôi phải tiếp tục đọc bài báo và trong nửa thứ hai tác giả đã đo kịch bản khóa với hai và ba chủ đề, mà được gần gũi hơn với mức độ đồng thời của bộ vi xử lý ngày nay.
Vì vậy, tác giả cho biết, với hai chủ đề trên Lõi kép, chi phí khóa là 120ns và với 3 chủ đề, nó được chuyển đến 180ns. Vì vậy, nó dường như rõ ràng phụ thuộc vào số lượng các chủ đề truy cập đồng thời và nhiều hơn nữa là tồi tệ hơn.
Vì vậy, nó là đơ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 được vô ích.
Một vấn đề khác cần xem xét là nó được đo là thời gian trung bình!
Nếu thời gian lặp lại, sẽ có khoảng thời gian từ 1ms đến 20ms, đơn giản vì phần lớn là nhanh, nhưng vài luồng sẽ chờ xử lý thời gian và thậm chí phải mất vài mili giây.
Đây là tin xấu đối với 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 lưu ý là có thể có các hoạt động chậm hơn bên trong khóa và thường là trường hợp đó. Còn khối mã được thực hiện bên trong khóa, sự tranh chấp càng cao và sự chậm trễ tăng cao trên bầu trời. Hãy xem xét, hơn một thập kỷ đã trôi qua từ năm 2003, đó là vài thế hệ bộ vi xử lý được thiết kế đặc biệt để chạy đồng thời và khóa là làm hại đáng kể hiệu suất của chúng.
Việc khóa biến số không quá tốn kém; đó là sự chờ đợi trên một biến bị khóa mà bạn muốn tránh. – Gabe
nó rẻ hơn rất nhiều so với chi tiêu giờ theo dõi xuống một điều kiện chủng tộc ;-) – BrokenGlass
Vâng ... nếu một khóa là tốn kém, bạn có thể muốn tránh chúng bằng cách thay đổi chương trình để nó cần ít khóa hơn. Tôi có thể thực hiện một số loại đồng bộ hóa. –