Tôi hiện đang sử dụng OpenMP để viết mã chạy trên các nút đa lõi. openMP có một mô hình bộ nhớ cụ thể đảm bảo rằng bộ nhớ được đồng bộ giữa các luồng chạy trên các lõi khác nhau khi khóa được mua lại.Có `std :: mutex` và` std :: lock` đảm bảo bộ nhớ đồng bộ hóa trong mã bộ xử lý liên không?
Tôi xem xét sử dụng cấu trúc C++ 11 (std::thread
với std::mutex
và std::lock
) thay vì openMP (vì tính linh hoạt lớn hơn) và tự hỏi liệu bộ nhớ đồng bộ hóa giữa các bộ xử lý có được đảm bảo ở đây không? Và nếu không, làm thế nào tôi có thể thực thi nó?
Câu hỏi của bạn là một chút không rõ ràng. Nó gần giống như yêu cầu của bạn làm thế nào để làm lập trình đa luồng. –
Một số đồng bộ hóa được đảm bảo, một số đồng bộ không được bảo đảm. Câu hỏi này thực sự mơ hồ. – jpalecek
Bạn có nghĩa là đồng bộ hóa bộ nhớ của chính 'mutex' hoặc truy cập dữ liệu trong mã được bảo vệ bởi mutex không? – KillianDS