Lưu ý : đây là một bài đăng lại vì câu hỏi đã được coi là không phù hợp với diễn đàn Stack Overflow và nên được đăng ở đây. Chủ đề ban đầu là ở đó .
Tôi muốn nói về đa luồng, song song và các thư viện có sẵn ngày hôm nay để đạt được công việc đó. Tôi đặc biệt tự hỏi liệu một thư viện dễ sử dụng để đạt được khái niệm này (được đưa ra dưới đây) đã tồn tại chưa, hoặc liệu nó có phải được viết ra không, và nó khó đến mức nào.
Mục đích của thư viện tôi đang tìm kiếm:
- hầu hết các nhà phát triển có thể truy cập, không chỉ với các kỹ sư hoặc người có bằng tốt nghiệp (điều này có nghĩa là các nhà phát triển MUỐN sử dụng nó, không sợ nó)
- có sẵn cho các nhà phát triển C ++
- di động (bắt đầu với Windows, Mac OS X và Linux, sau đó mở rộng sang thiết bị di động)
- nhẹ
- dễ sử dụng (liên quan đến khả năng tiếp cận)
Các tính năng quan trọng nhất mà tôi đang tìm kiếm:
- song song nhiệm vụ
- hủy bỏ nhiệm vụ (một cách mềm mại và đột ngột)
- nhiệm vụ phụ thuộc
Các thư viện liên quan hiện có :
- Các khối xây dựng luồng : thực sự phức tạp để sử dụng và giấy phép khá hạn chế (GPL / thương mại), đó là thư viện duy nhất tôi tìm thấy và bao gồm tất cả các tính năng tôi đang tìm kiếm
- Grand Central Dispatch : hiện không di động, không quá phức tạp, không hủy nhiệm vụ (một khi đã bắt đầu), không phụ thuộc nhiệm vụ, không hỗ trợ phụ thuộc tự động (chỉ thủ công)
- PFunc : Chỉ Unix, vẫn hơi phức tạp, không phụ thuộc tác vụ, không hủy tác vụ
- Thư viện song song của Microsoft : Chỉ dành cho nền tảng MS và .NET, không hủy bỏ cứng, phụ thuộc tác vụ bị hạn chế và thủ công (một tác vụ không thể đánh thức nhiều hơn một tác vụ khác)
- OpenCL : hiện không có sẵn trên tất cả các nền tảng, không nhiều hơn một thư viện tác vụ song song GPU (không phải mức cao như tôi mong muốn)
- OpenMP : được hỗ trợ rộng rãi ngoại trừ các phiên bản miễn phí của Visual Studio, không hủy tác vụ cũng như phụ thuộc tác vụ tự động
Vậy suy nghĩ của bạn về tất cả những điều này là gì? Tại sao bạn nghĩ rằng có rất ít thư viện tương ứng với những nhu cầu này? Hay tôi đã bỏ lỡ một thư viện tuyệt vời? Và bạn có nghĩ rằng nó có nghĩa là quá nhiều công việc để đạt được một? Hay không đủ thú vị? Lưu ý rằng những thiếu sót tôi đã viết là những thứ tôi tìm thấy với một số tìm kiếm, tôi không phải là chuyên gia trong bất kỳ thư viện nào trong số này.
Mục đích cuối cùng của thư viện này, ngay cả khi đó chỉ là một giấc mơ, sẽ là lập trình theo cách song song dễ dàng như bạn thường làm với lập trình tuần tự.
Ceylo