Không hoàn toàn hiểu được quyết định trong bối cảnh đồng thời và song song trong Haskell. Một số ví dụ sẽ hữu ích. Cảm ơnTại sao đồng thời haskell không xác định trong khi song song haskell nguyên thủy (mệnh và pseq) xác định?
Trả lời
Khi xử lý các giá trị thuần túy, thứ tự đánh giá không quan trọng. Đó là cơ bản những gì song song song song hiện: Đánh giá giá trị tinh khiết song song. Trái ngược với các giá trị thuần túy, trật tự thường quan trọng đối với các hành động có tác dụng phụ. Hành động chạy đồng thời được gọi là đồng thời.
Ví dụ, hãy xem xét hai hành động putStr "foo"
và putStr "bar"
. Tùy thuộc vào thứ tự mà hai hành động đó được đánh giá, đầu ra là "foobar", "barfoo" hoặc bất kỳ trạng thái nào ở giữa. Đầu ra là không xác định vì nó phụ thuộc vào thứ tự cụ thể của việc đánh giá.
Ví dụ khác, hãy xem xét hai giá trị sum [1..10]
và 5 * 3
. Bất kể thứ tự mà hai người được đánh giá, họ luôn giảm xuống cùng một kết quả. Điều này determinism là một cái gì đó bạn thường có thể chỉ đảm bảo với giá trị tinh khiết.
Tương tranh và song song là hai điều khác nhau.
Đồng thời có nghĩa là bạn có nhiều luồng tương tác không xác định. Ví dụ, bạn có thể có một máy chủ trò chuyện nơi mỗi khách hàng được xử lý bởi một sợi. Tính không xác định là điều cần thiết đối với hệ thống bạn đang cố gắng lập mô hình.
Song song là về việc sử dụng nhiều luồng chỉ đơn giản là làm cho chương trình của bạn chạy nhanh hơn. Tuy nhiên, kết quả cuối cùng phải giống hệt như khi bạn chạy thuật toán tuần tự.
Nhiều ngôn ngữ không có nguyên thủy cho song song, do đó bạn phải triển khai nó bằng cách sử dụng các nguyên tắc tương tranh như chủ đề và khóa. Tuy nhiên, điều này có nghĩa là bạn lập trình viên phải cẩn thận để đảm bảo rằng bạn không vô tình đưa ra các khái niệm không xác định không mong muốn hoặc các vấn đề tương tranh khác. Với nguyên thủy song song rõ ràng như par
và pseq
, nhiều mối quan tâm này chỉ đơn giản biến mất.
Đó là ... a * thực sự * giải thích tốt. Cảm ơn bạn. –
- 1. Hiệu suất tính toán danh sách song song Haskell
- 2. Thực hiện song song đầu cơ Haskell
- 3. Thực trạng xử lý song song tự động trong Haskell
- 4. Làm thế nào để khai thác bất kỳ song song nào trong mã song song haskell của tôi?
- 5. Biến không xác định, Haskell
- 6. Làm thế nào để viết mã song song với vectơ Haskell?
- 7. Haskell: Tại sao ‘par` được xác định theo cách của nó?
- 8. Xử lý đồ họa song song trong Haskell
- 9. Cách sử dụng Chiến lược song song trong Haskell
- 10. Về 'pseq' trong Haskell
- 11. Haskell đồng thời - là ngã ba thực sự không xác định?
- 12. Suy thoái khi sử dụng các chiến lược song song trong Haskell
- 13. Tại sao chúng ta cần 'seq' hoặc 'pseq' với 'par' trong Haskell?
- 14. đệ quy nguyên thủy mô-đun haskell
- 15. Xác định HEC hiện tại cho một chức năng trong Haskell
- 16. Ngoại lệ thời gian chạy với Dữ liệu song song Haskell/GHC 7.4.2
- 17. Cách xác định công việc trong Jenkins/Hudson để chạy song song?
- 18. Không đồng bộ/chờ và song song trong C#
- 19. Khi nào (và khi nào không) để xác định Monad
- 20. Làm cách nào để viết giảm song song bằng các chiến lược trong Haskell?
- 21. cách xác định số lượng tệp tải xuống song song/đồng thời tối đa mà máy chủ khung chơi có thể xử lý.cho một băng thông cố định
- 22. Tại sao kích thước nguyên thủy boolean của Java không được xác định?
- 23. Xác định nếu một số lượng nhất định là số nguyên tố trong Haskell
- 24. Khuôn khổ Haskell để song song hóa không an toàn C++ lib
- 25. LinqToSql - Song song - DataContext và song song
- 26. Cấu hình song song TortoiseSVN không chính xác
- 27. Haskell đồng thời và kiên trì
- 28. Phép nhân ma trận song song
- 29. Xác định các kiểu nguyên thủy trong các mẫu
- 30. Cách xác định ngoại lệ tùy chỉnh trong Haskell?
+1; nói cách khác, song song là một sự tối ưu hóa; concurrency thay đổi ngữ nghĩa. – ehird
@ehird Có. Đó là điều tôi đã cố gắng truyền đạt một cách hoàn hảo. – fuz
Trong lang oz: 1 giá trị dataflow chỉ có thể được ràng buộc một thời gian 2 chương trình sử dụng giá trị unbind nên chờ đợi cho đến khi nó được ràng buộc. Vì vậy, hành vi là xác định khi hai luồng sử dụng cùng một giá trị dataflow. – jiamo