Catatan : ini adalah pengeposan ulang karena pertanyaannya dianggap tidak cocok untuk forum Stack Overflow dan seharusnya diposting di sini. Topik asli ada di sana .
Saya ingin berbicara tentang multithreading, paralelisme, dan perpustakaan yang tersedia saat ini untuk mencapai pekerjaan itu. Saya terutama bertanya-tanya apakah perpustakaan yang mudah digunakan untuk mencapai konsep ini (diberikan di bawah) sudah ada, atau apakah harus ditulis, dan seberapa sulitnya.
Tujuan perpustakaan yang saya cari:
- dapat diakses oleh sebagian besar pengembang, tidak hanya untuk insinyur atau orang yang sangat lulus (ini harus berarti pengembang INGIN menggunakannya, tidak takut akan itu)
- tersedia untuk pengembang C ++
- portabel (mulai dengan Windows, Mac OS X dan Linux, kemudian lanjutkan ke perangkat seluler)
- ringan
- mudah digunakan (terkait dengan aksesibilitas)
Fitur terpenting yang saya cari:
- paralelisme tugas
- pembatalan tugas (dengan cara yang lembut dan tiba-tiba)
- dependensi tugas
Perpustakaan terkait yang ada :
- Thread Building Blocks : benar-benar rumit untuk digunakan, dan agak membatasi lisensi (GPL / komersial), itu satu-satunya perpustakaan yang saya temukan dan itu termasuk semua fitur yang saya cari
- Grand Central Dispatch : saat ini tidak portabel, tidak terlalu rumit, tidak ada pembatalan tugas (setelah dimulai), tidak ada dependensi tugas, tidak ada dukungan dependensi otomatis (hanya manual)
- PFunc : Hanya unix, masih sedikit rumit, tidak ada ketergantungan tugas, tidak ada pembatalan tugas
- Microsoft Task Parallel Library : Platform MS dan .NET saja, tidak ada pembatalan keras, dependensi, dan dependensi tugas manual (satu tugas tidak dapat membangunkan lebih dari satu tugas lain)
- OpenCL : saat ini tidak tersedia di semua platform, tidak lebih dari perpustakaan tugas paralel GPU (tidak setinggi yang saya inginkan)
- OpenMP : didukung secara luas kecuali versi gratis Visual Studio, tidak ada pembatalan tugas atau dependensi tugas otomatis
Jadi apa pendapat Anda tentang semua ini? Menurut Anda mengapa ada begitu sedikit perpustakaan yang sesuai dengan kebutuhan ini? Atau apakah saya melewatkan perpustakaan yang bagus? Dan menurut Anda apakah itu berarti terlalu banyak pekerjaan untuk mencapainya? Atau tidak cukup menarik? Perhatikan bahwa kekurangan yang saya tulis adalah yang saya temukan dengan beberapa pencarian, saya bukan ahli di salah satu perpustakaan ini.
Tujuan akhir dari perpustakaan ini, bahkan jika itu adalah mimpi, adalah pemrograman secara paralel semudah yang biasanya Anda lakukan dengan pemrograman berurutan.
Ceylo
Jawaban:
TBB hampir semuanya ada yang datang dekat.
boost::thread
tingkat terlalu rendah. Anda mencari di tempat yang salah di TPL, dengan cara - Microsoft mengirimkan perpustakaan terpisah yang disebut PPL untuk kode asli. Itu, tentu saja, hanya mendukung Windows.Namun, jika Anda menganggap TBB rumit untuk digunakan, saya akan mempertanyakan apakah pengembang yang Anda pikirkan benar-benar mampu membuat aplikasi paralel. TBB memiliki salah satu antarmuka yang paling ramah dengan hal-hal sederhana seperti
parallel_for_each
. Jika Anda tidak dapat mengatasi beberapa lambda, saya merasa sulit untuk melihat bagaimana Anda akan mengatasi konkurensi.sumber