[chỉnh sửa: câu hỏi chỉ đề cập đến Haskell đồng thời, nhưng giấy được tham chiếu là, tôi tin rằng "Giao dịch bộ nhớ tổng hợp", giấy trong đó Haskell STM được mô tả lần đầu tiên. Vui lòng sửa tôi nếu tôi sai ở đây.]
STM hoạt động tốt trên nhiều lõi ngay bây giờ. Việc triển khai song song lần đầu tiên được xuất xưởng trong GHC 6.6 và sử dụng chiến lược khóa hai pha chi tiết; có nghĩa là, để cam kết một giao dịch, việc thực hiện đầu tiên cố gắng khóa mỗi biến có liên quan trong giao dịch, sau đó cam kết các thay đổi và cuối cùng mở khóa tất cả các biến. Nhận được một khóa không chặn: nếu khóa đã được tổ chức, sau đó các giao dịch hủy bỏ và thử lại (điều này tránh được bế tắc khóa-trật tự đảo ngược thông thường sẽ áp dụng nếu khóa mua lại đã bị chặn). Triển khai STM này chắc chắn không phải là nhanh nhất - tài liệu mô tả nhiều kỹ thuật thay thế sẽ mang lại hiệu suất tốt hơn, nhưng việc thực hiện GHC tương đối đơn giản và không liên quan đến bất kỳ khóa toàn cầu nào (các giao dịch hoạt động trên các bộ biến khác nhau có thể tiến hành). song song không có nhiễu).
Nguồn
2010-08-11 10:59:17
bản sao có thể có của [Trạng thái lập trình đa lõi trong Haskell là gì?] (Http://stackoverflow.com/questions/3063652/whats-the-status-of-multicore-programming-in-haskell) –