Một mẫu mà tôi đã bắt gặp một số lần bây giờ là một mẫu trong đó một danh sách các giá trị cần được kiểm tra bằng cách ánh xạ một số thử nghiệm qua nó và xem liệu có bất kỳ hoặc tất cả các yếu tố được thông qua không. Giải pháp điển hình là chỉ sử dụng các tiện ích tích hợp all
và any
.
Vấn đề là những đánh giá này nối tiếp. Trong nhiều trường hợp, việc đánh giá song song với quá trình hoàn tất sẽ nhanh hơn nhiều khi bất kỳ luồng nào tìm thấy "Sai" cho all
hoặc "Đúng" cho any
. Tôi khá chắc chắn rằng hành vi ngắn mạch không thể được thực hiện bằng Control.Parallel vì nó yêu cầu giao tiếp giữa các quá trình và tôi không hiểu bất cứ nơi nào gần đủ Control.Conc hiện để thực hiện điều này.
Đó là một mô hình khá phổ biến trong toán học (ví dụ Miller-Rabin Primality) vì vậy tôi cảm thấy như ai đó có thể đã đưa ra một giải pháp cho điều này rồi, nhưng vì lý do rõ ràng khi thực hiện tìm kiếm google cho "song song hoặc / và / bất kỳ / tất cả trong danh sách haskell "không trả về nhiều kết quả có liên quan.
unamb
thư viện
pthreads
C hoặc luồng xanh trong Haskell) Bạn không bắt đầu nhiều máy chủ web để xử lý các yêu cầu web đồng thời, thay vào đó bạn chạy nhiều luồng trong một quy trình! Áp dụng tương tự cho song song. Bạn quay nhiều luồng như bạn có CPU và chia đều công việc của bạn, do đó đảm nhiệm các nhiệm vụ ràng buộc CPU. Hãy thử thư viện này để thuyết phục bản thân github.com/lehins/haskell-scheduler