it-swarm-id.com

Bagaimana Anda mempraktikkan konkurensi dan multi-threading?

Saya telah membaca tentang konkurensi, multi-threading, dan bagaimana "makan siang gratis selesai" . Tapi saya belum memiliki kemungkinan untuk menggunakan MT dalam pekerjaan saya.

Jadi saya mencari saran tentang apa yang bisa saya lakukan untuk mendapatkan latihan CPU yang berat MT melalui latihan atau partisipasi dalam beberapa proyek sumber terbuka.

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 diterapkan menggunakan MT, daripada buku atau makalah yang hanya menggambarkan alat seperti utas, mutex dan kunci, atau bagaimana MT dapat digunakan untuk memiliki GUI responsif ...

33
Xavier Nodet

Bab 11 buku Intel Threading Building Blocks oleh James Reinders dikhususkan untuk contoh algoritma dan proyek yang memanfaatkan Komputasi Paralel (atau Pemrograman Paralel): pencari substring, Game of Life, a Sieve of Eratosthenes, Matrix Multiply, dan kemudian topik lebih lanjut lainnya seperti penyaringan paket jaringan dan game.

8
Xavier Nodet

Artikel Joseph Albahari pada Threading dalam C # adalah salah satu sumber daya 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.

GETTING STARTED
Introduction and Concepts
Join and Sleep
How Threading Works
Threads vs Processes
Threading’s Uses and Misuses
Creating and Starting Threads
Passing Data to a Thread
Naming Threads
Foreground vs Background
Thread Priority
Exception Handling
Thread Pooling
Thread Pooling via TPL
Thread Pooling Without TPL
Optimizing the Thread Pool
BASIC SYNCHRONIZATION
+ Synchronization Essentials
+ Locking
+ Thread Safety
+ Event Wait Handles
+ Synchronization Contexts
USING THREADS
+ Event-Based Asynch Pattern
+ BackgroundWorker
+ Interrupt and Abort
+ Safe Cancellation
+ Lazy Initialization
+ Thread-Local Storage
+ Timers
ADVANCED THREADING
+ Nonblocking Synchronization
+ Signaling with Wait and Pulse
+ The Barrier Class
+ Reader/Writer Locks
+ Suspend and Resume
+ Aborting Threads
PARALLEL PROGRAMMING
+ Parallel Programming
+ Why PFX?
+ PLINQ
+ The Parallel Class
+ Task Parallelism
+ Working with AggregateException
+ Concurrent Collections
+ SpinLock and SpinWait

Anda juga dapat melihat tutorial Jon Skeet di sini: http://www.yoda.arachsys.com/csharp/threads/

15
Robert Harvey

Java Concurrency in Practice adalah salah satu buku terbaik tentang multi-threading dan concurrency. Meskipun semua contoh dalam buku ini adalah Java, buku ini memberikan penjelasan yang solid tentang MT dunia. Itu sangat membantu saya ketika saya sedang mengembangkan MT) sistem.

13
Sorantis

Saya menemukan Pemrograman Bersamaan pada 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 dimulai dengan MT aplikasi.

4
Scott Whitlock

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

2
dan_waterworth

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.

1
Pemdas