Sự liên quan thực tế của các thuật toán loại trừ lẫn nhau trong sách giáo khoa là gì?


8

Đã có một số lượng lớn nghiên cứu về các thuật toán loại trừ lẫn nhau - ví dụ, rất nhiều trong số đó được trình bày trong sách giáo khoa cổ điển như Nghệ thuật lập trình đa bộ xử lý , trong đó toàn bộ một chương dành cho chúng.

Tôi đang tự hỏi những tình huống thực tế nào mà người ta có thể cần các thuật toán này trong quá trình thiết kế hệ thống đồng thời, thay vì sử dụng các nguyên hàm đồng bộ hóa ngôn ngữ và hệ điều hành điển hình (giả sử, được cung cấp bởi thư viện pthread)?

Tôi có thể nghĩ về nhiều trường hợp đặc biệt mà tôi tưởng tượng các nguyên thủy chuẩn không được điều chỉnh cụ thể cho chúng, ví dụ: "một người đọc thường xuyên và một người viết không thường xuyên", hoặc ngược lại, hoặc "chính xác là một thao tác viết, nhiều người đọc", v.v. - có bất kỳ thuật toán loại trừ lẫn nhau trong sách giáo khoa tốt hơn đáng kể trong thực tế trong các tình huống như vậy không?

Nói ngắn gọn: Những thuật toán loại trừ lẫn nhau nào có liên quan thực tế với một kỹ sư đã có một thư viện điển hình được cung cấp bằng ngôn ngữ của các nguyên thủy đồng thời theo ý của họ?


đây là một lĩnh vực hoạt động nghiên cứu từ nhiều thập kỷ trước trong việc tạo ra những "nguyên thủy" này và đã thay đổi đáng kể trong thực hành kỹ thuật. Ngoài ra, một số trong số này là công trình lý thuyết về các khả năng không nhất thiết phải được áp dụng thực tế. một số công trình có phần giả tạo và trả lời các câu hỏi lý thuyết mở. chúng là những bài tập hữu ích trong việc tìm hiểu nhiều / sự tinh tế đáng ngạc nhiên của sự đồng thời và xây dựng một trực giác trong khu vực.
vzn

Câu trả lời:


6

Trả lời: không có. Đó không phải là những phần của Nghệ thuật lập trình đa bộ xử lý của Herlihy và Shavit. Trong các chương về loại trừ lẫn nhau Herlihy và Shavit không cung cấp cho bạn các lựa chọn thay thế cho pthreadthư viện, họ đang chỉ cho bạn cách nó triển khai tương đương với pthreadthư viện.

Chương 2 của Herlihy và Shavit có tiêu đề "Loại trừ lẫn nhau". Nó cung cấp một loạt các thuật toán cổ điển để thực hiện tương đương pthread_mutex_lock()với chỉ bộ nhớ chia sẻ nhất quán liên tục. Câu trả lời của tôi https://cs.stackexchange.com/a/12632/7459https://cs.stackexchange.com/a/30249/7459 thảo luận về tầm quan trọng của những triển khai này và có một con trỏ tới một thực tế cho sử dụng trên các máy không có hoạt động đồng bộ hóa phần cứng tích hợp. (Bài viết năm 1987 của Lamport trong ACM Trans. Trên Hệ thống máy tính).

Chương 7 của Herlihy và Shavit cung cấp nhiều cách triển khai khóa xoay và hàng đợi tương đương pthread_mutex_lock(), và Chương 8 mở rộng để thảo luận pthread_cond_t(các biến điều kiện), pthread_rwlock_t(khóa đầu đọc / ghi) và chạm nhanh vào semaphores. Có thể có các tình huống pthread_rwlock_tcó thể được sử dụng thay thế pthread_lock_tcho lý do hiệu suất (nhưng thường là không) và trong Posix bạn cần sử dụng semaphoresđể đồng bộ hóa giữa các quá trình.

Chương 9 đến 16 chủ yếu thảo luận về các ứng dụng (các loại container đồng thời). Chương 17 thảo luận ngắn gọn về tương đương pthread_barrier_t.

Tất cả những gì đã nói, Herlihy và Shavit là hai trong số những người đề xướng nhiều nhất về bộ nhớ giao dịch và một loạt các loại đồng bộ hóa không chặn (và chờ đợi). Những kỹ thuật này được dự định là giải pháp thay thế cho loại trừ lẫn nhau trong một số trường hợp nhất định. Herlihy và Shavit rắc các triển khai không chặn khác nhau trong suốt các Chương 9 đến 16, và sau đó đi vào chi tiết về bộ nhớ giao dịch trong Chương 18.

Bộ nhớ giao dịch và các kỹ thuật đồng bộ hóa không chặn khác nhằm giải quyết vấn đề một số thuật toán được thiết kế kém đòi hỏi các luồng phải giữ các phần quan trọng của chúng trong một thời gian rất dài. Bộ nhớ giao dịch và đồng bộ hóa thực sự không chặn hiện không phải là giải pháp thay thế thực tế trong mọi tình huống thực tế, nhưng các kỹ thuật chuyển đổi cấu trúc dữ liệu thành cấu trúc dữ liệu không chặn rất hữu ích trong thực tế để giảm thiểu thời gian cấu trúc dữ liệu chặn vẫn ở mức quan trọng phần. (Thường thì bạn có thể giảm kích thước của phần quan trọng xuống chỉ còn một vài hướng dẫn máy.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.