web-dev-qa-db-ja.com

どのように並行性とマルチスレッドを練習しますか?

私は並行性、マルチスレッド、そして "無料のランチが終わった" について読んでいます。しかし、私はまだ仕事でMTを使用する可能性を持っていませんでした。

したがって、私はいくつかのオープンソースプロジェクトへの演習または参加を通じて、CPUヘビーMT=の練習をするために何ができるかについての提案を探しています。

ありがとう。

編集:私は、CPUにバインドされたタスクにMTを使用するオープンソースプロジェクト、またはMTを使用して実装するのに興味深いアルゴリズムだけでなく、スレッド、ミューテックス、ロックなどのツール、またはMTを使用してGUIを応答させる方法...

33
Xavier Nodet

本の第11章 Intel Threading Building Blocks James Reindersによる Parallel Computing (またはParallel Programming)を利用するアルゴリズムとプロジェクトの例に特化しています:サブストリングファインダー、 Game of Life、エラトステネスのふるい、Matrix Multiply、さらにネットワークパケットフィルタリングやゲームなどのより高度なトピック。

8
Xavier Nodet

Joseph Albahariの C#でのスレッディング に関する記事は、私が見た中で最高のリソースの1つです。

目次は以下のとおりです。タスク並列ライブラリなどの一部のトピックは.NETに固有ですが、その多くは他の言語、特に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

Jon Skeetのチュートリアルもここで見ることができます: http://www.yoda.arachsys.com/csharp/threads/

15
Robert Harvey

Java Concurrency in Practice は、マルチスレッドと並行性に関する最高の本の1つです。本のすべての例はJavaに基づいていますが、この本はMT世界の確かな説明を提供します。MTを開発していたときに私を助けるシステム。

13
Sorantis

Joe Duffyによる Windowsでの並行プログラミング が非常に役立つことがわかりました。深みがあります。それはどんなパンチも引っ張らないので、あなたは本当にあなたが足で自分を撃つ方法がいくつあるのかについて本当に良い感覚を得ます。これは私が注意深くなるのに役立ちました。これは、MTアプリで始まるすべての人に与えることができる最高のアドバイスです。

4
Scott Whitlock

並行性と並列性には違いがあります。同時実行とは、2つのファイルに書き込むなど、一度に複数のことを実行する行為です。並列処理とは、複数のコアを使用してプログラムを高速化することです。

並行性に関しては無料の昼食はありませんが、並行して昼食は確実に自由になります。 http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell のような開発を参照してください

2
dan_waterworth

このサイトには、一般的にいくつかの良いプロジェクト例があります。 www.planet-source-code.com

言語を選択してマルチスレッドを検索するだけです。ソースコードが利用可能なプロジェクトがいくつか表示されます。

1
Pemdas