Mais conteúdo relacionado
Semelhante a 並列プログラミング入門!&おさらい! (8)
並列プログラミング入門!&おさらい!
- 27. 並列プログラミングの問題! スレッドローカルストレージ スレッドローカルストレージ: スレッド別データの保存先。 スレッド別のグローバル変数として使える。 マルチスレッドなプログラミングで重宝する機能なのですが、スレッドを跨いで使うスマートポインタの類と組み合わさると、スマートポインタの参照先を解放するコードにスレッドローカルストレージへのアクセスが含まれると意図した本来アクセスするべきデータとは異なるデータにアクセスしてしまうという自体が発生し得ます。 外部のAPIなどにこのような地雷があると怖い。
- 36. 並列プログラミングのミソ! ロックフリー ロックフリー:ロックを行わないこと。 並列プログラミングではロックの使用を迫られる場面が多いが、ロックは速度的なコストが高く、またデッドロックを起こす危険も孕む為、安易なロックの多用は慎むべき。 しかし、下手にロックフリーを狙って余計なバグを埋め込んでしまうというリスクもあり、難しいところ。 並列処理を正しくコーディングすることは難しい。
- 38. 並列プログラミングのいろいろ! CPUの並列対応 ハイパースレッディング: 擬似的にひとつのコアが複数のコアであるように振る舞う仕組み。 マルチコア: ひとつのプロセッサに複数のコアを搭載。 Kernelレベルを除けば通常、ソフトウェアから見ればマルチプロセッサとの違いはない。 マルチプロセッサ 同じ基盤に複数のCPUを搭載。 通常、同一のCPUを使用する必要がある。
- 41. 並列プログラミングのいろいろ! ミューテックス もっとも基本的な排他制御用同期オブジェクト。 ロックに成功したスレッドのみが処理を継続。同じミューテックスに対して一度にロックできるのはひとつのスレッドのみ。ロックに失敗したスレッドはロックに成功するまで待機、あるいは処理を放棄。 Windowsではロックに成功した処理が再帰的な構造になっている場合、ロック後の再入であっても同一スレッドであればロックに成功した扱いになる。POSIXの場合はデッドロックとなる。
- 43. 並列プログラミングのいろいろ! その他の同期オブジェクト シグナル 主に待機用に使われる同期オブジェクト。 セマフォ 共有リソースに同時にアクセスするスレッド・プロセスの「数」を調整するのに使われる同期オブジェクト。 ReaderWriterLock 共有リソースへのリード目的のロックであれば同時に複数のロックを許し、ライト目的のロックであれば(リード目的を含め)ひとつのロックしか許さないような同期オブジェクト。