Saya telah membaca tentang konkurensi, multi-threading, dan bagaimana "makan siang gratis berakhir" . Tetapi saya belum memiliki kemungkinan untuk menggunakan MT dalam pekerjaan saya.
Oleh karena itu saya mencari saran tentang apa yang bisa saya lakukan untuk mendapatkan latihan CPU MT berat melalui latihan atau partisipasi dalam beberapa proyek open-source.
Terima kasih.
Sunting: Saya lebih tertarik pada proyek-proyek sumber terbuka yang menggunakan MT untuk tugas-tugas yang terikat CPU, atau hanya algoritma yang menarik untuk diimplementasikan menggunakan MT, daripada buku atau makalah yang hanya menggambarkan alat-alat seperti utas, mutex dan kunci, atau bagaimana MT dapat digunakan untuk memiliki GUI responsif ...
learning
multithreading
Xavier Nodet
sumber
sumber
Jawaban:
Artikel Joseph Albahari tentang Threading di C # adalah salah satu sumber terbaik yang pernah saya lihat.
Daftar Isi di bawah ini. Perhatikan bahwa beberapa topik, seperti Pustaka Paralel Tugas, khusus untuk .NET, tetapi sebagian besar berlaku untuk bahasa lain, terutama Java.
Anda juga dapat melihat tutorial Jon Skeet di sini: http://www.yoda.arachsys.com/csharp/threads/
sumber
Java Concurrency in Practice adalah salah satu buku terbaik tentang multi-threading dan konkurensi. Meskipun semua contoh dalam buku ini berbasis Java, buku ini memberikan penjelasan yang kuat tentang dunia MT. Itu banyak membantu saya ketika saya sedang mengembangkan sistem MT.
sumber
Bab 11 buku Intel Threading Building Blocks oleh James Reinders dikhususkan untuk contoh-contoh algoritma dan proyek yang memanfaatkan Komputasi Paralel (atau Pemrograman Paralel): pencari substring, Game of Life, Sieve of Eratosthenes, Matrix Multiply, dan kemudian topik lebih lanjut lainnya seperti penyaringan paket jaringan dan permainan.
sumber
Saya menemukan Pemrograman Bersamaan di Windows oleh Joe Duffy sangat membantu. Ada banyak kedalaman. Itu tidak menarik pukulan, jadi Anda benar-benar merasakan betapa banyak cara untuk menembak diri sendiri di kaki. Ini membantu saya untuk berhati-hati, yang merupakan saran terbaik yang dapat saya berikan kepada siapa saja yang memulai dengan aplikasi MT.
sumber
Ada perbedaan antara konkurensi dan paralelisme. Concurrency adalah tindakan melakukan lebih dari satu hal sekaligus, seperti menulis ke 2 file. Paralelisme adalah tindakan mempercepat program dengan menggunakan banyak core.
Meskipun tidak ada makan siang gratis dalam hal konkurensi, secara paralel, makan siang itu menjadi lebih bebas, lihat perkembangan seperti http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
sumber
Situs ini memiliki beberapa contoh proyek yang bagus secara umum. www.planet-source-code.com
Pilih saja bahasa dan cari multi-threading. Anda akan melihat sejumlah proyek dengan kode sumber yang tersedia.
sumber