2010-08-18 41 views
5

Có rất nhiều mô hình và phương pháp để lập trình đồng thời được sử dụng hiện nay. Phần mềm giao dịch bộ nhớ, diễn viên, chia sẻ đồng thời nhà nước, không gian tuple và nhiều, nhiều hơn nữa.Ví dụ các vấn đề về tính toán đồng thời

Những gì tôi thấy thiếu, tuy nhiên, là một thư viện các vấn đề kiểm tra thú vị cho đồng thời. Một ví dụ nổi tiếng là "Vấn đề triết lý ăn uống", đó không phải là một vấn đề phức tạp, cũng không phải là động lực cũng không thực tế. Sau đó, có nhiều thuật toán song song (phép nhân ma trận, dựng hình, song song dữ liệu lồng nhau chung) chỉ yêu cầu phân phối công việc, nhưng không có đồng thời thực sự với giao tiếp giữa các luồng thực thi. Vì vậy, bất cứ ai có thể chỉ cho tôi một số vấn đề thú vị đòi hỏi sự tương tranh thực trong một môi trường tương tác, thậm chí có thể phân phối, đơn giản, đủ để sử dụng làm ví dụ cho các mô hình đồng thời không? Không. Lý tưởng nhất, tôi muốn tìm một tập hợp các vấn đề để phục vụ như là một "kiểm tra thiếu" cho các mô hình đồng thời (hoặc để làm nổi bật sự khác biệt của chúng, vì mọi mô hình đều có điểm mạnh và điểm yếu).

Bất kỳ giúp đỡ được nhiều đánh giá cao :)

Trả lời

3

trước đây tôi đã xem xét vấn đề này chính xác, sau khi đề xuất trước đây một số lập trình đồng thời mô hình bản thân mình: p

Kết luận Tôi đạt sau đó là rằng đó là một tập kiểm tra doesn dường như không tồn tại một cách độc lập về ngôn ngữ. Trong khi nó có thể hữu ích cho nó để tồn tại, có vẻ là một số lý do khá tốt nó không (theo sự hiểu biết tốt nhất của tôi).

Phần lớn trọng tâm trong lập trình đồng thời có xu hướng là song song dữ liệu, sao cho cùng một thao tác được áp dụng song song với các phần khác nhau của cùng một tập dữ liệu. Các loại nhiệm vụ song song cấp (nghĩa là các nhiệm vụ khác nhau được thực hiện song song, có thể chia sẻ dữ liệu) mà tôi nghĩ bạn đang nói đến là thực sự không được thực hiện rất nhiều. Tôi nghĩ điều này là vì nó rất khó. Nhưng tôi nghĩ rằng nó cũng khá khó khăn bởi vì hầu hết các vấn đề không cho vay đặc biệt tốt cho loại đồng thời này. Mô tả một hệ thống phân tán theo nguyên tắc đồng thời có thể hữu ích, nhưng các hệ thống này có xu hướng được tách rời sao cho có một giao thức (được viết hoặc ngụ ý) kiểm duyệt việc truyền thông của chúng. Mọi người có xu hướng không nghĩ đến các loại hệ thống này như các tình huống lập trình "đồng thời", mặc dù chúng được xem trong khung bên phải (tức là xem "client" và "server" như các tác nhân hoạt động song song với đồng bộ hóa tại một số điểm) .

Những nơi duy nhất tôi nghĩ bạn có thể tìm thấy một số nguồn cảm hứng sẽ nằm trong các triển khai cá nhân. Erlang, Occam (và Occam-pi), Alice, CML, Haskell đồng thời vv tất cả đều có khả năng có các thử nghiệm nhỏ, nhưng cả hai vấn đề và triển khai của chúng sẽ bị thiên vị để có thể thực hiện được trong một ngôn ngữ cụ thể (vì chúng rõ ràng là có thể thực hiện được bằng ngôn ngữ đó!). Có lẽ bạn cũng có thể xem các cộng đồng đang làm việc trên multi-party session typesprocess calculi khác nhau như pi-calculus, CCS và CSP để xem loại hệ thống nào họ đang sử dụng làm mô hình ví dụ. Ý tưởng về một tập hợp các vấn đề bất khả tri về ngôn ngữ tiêu chuẩn để mô tả đồng thời giao tiếp là một hệ thống hấp dẫn, nhưng có phần khó nắm bắt vào thời điểm này, tôi nghĩ vậy.

+0

Ngoài ra, nếu bạn có bất kỳ quan tâm nào trong việc cố gắng biên dịch một kho dữ liệu kiểm tra như vậy, hãy cho tôi biết. Tôi có thể quan tâm đến việc giúp đỡ. Có các chi tiết liên hệ có sẵn từ trang web được liên kết trong tiểu sử của tôi. – Gian