Thư viện GNU thường sử dụng các chuỗi Posix để triển khai thư viện chuỗi tiêu chuẩn. Điều đó sử dụng một loại pthread_mutex_t
để đại diện cho một số loại mutex khác nhau; do đó, nó chứa các trường khác nhau cần thiết cho các mutex phức tạp hơn (ví dụ: bộ đếm cho các mutex đệ quy), cộng với một trường để xác định loại.
Bạn nói đúng, về nguyên tắc, với sự hỗ trợ thích hợp từ hệ điều hành, std::mutex
có thể sử dụng ít nhất một byte bộ nhớ người dùng. (Trên Linux, nó phải là một int
; và trên các nền tảng khác, nó có thể là một số nguyên hoặc xử lý có kích thước con trỏ tới một tài nguyên hạt nhân). Có lẽ, những lợi ích của việc sử dụng một thực hiện được thử nghiệm hiện có được coi là lớn hơn những lợi ích của việc tiết kiệm vài chục byte cho mỗi mutex.
Nguồn
2013-05-22 14:14:56
"Một mutex có thể được thực hiện thông qua một đơn giản' std :: nguyên tử '" không có nghĩa là đó là triển khai tối ưu. –
'nguyên tử' là một người đàn ông nghèo 'mutex' ... Ý tôi là, ** thực sự ** người đàn ông nghèo. –
Griwes
Tôi tự hỏi tại sao một số xem xét câu hỏi này không rõ ràng hay không hữu ích. –