- 並行性と並列性の違い:
- 並行性(Multiprocessing):複数のタスクが交互に実行されること。物理的に同時に実行される必要はない。
- 並列性(Parallelism):複数のタスクが物理的に同時に実行されること。
- プロセスとスレッドの違い:
- プロセス:OS から資源(メモリ空間、ファイル)を割り当てられ、独立して実行される単位。
- スレッド:プロセス内で実行される、より軽量な実行単位。メモリ空間を共有する。
- シンクロナス(同期)とアシンクロナス(非同期)の違い:
- 同期:タスクが完了するのを待つ。
- 非同期:タスクがバックグラウンドで実行され、完了を待たずに次のタスクに移動。
ps
,top
,htop
:プロセスの状態やリソース使用量を確認。kill
,bg
,fg
:プロセスの制御コマンド。
- POSIX スレッド(pthreads):POSIX 準拠のスレッドライブラリ。
pthread_create()
,pthread_join()
などの関数があります。
- パイプライン、ソケット、共有メモリ、セマフォなどのメカニズム。データをプロセス間で交換。
- ミューテックス(Mutex):複数のスレッドが同時にリソースを利用するのを防ぐ。
- デッドロック:2 つ以上のプロセス/スレッドが相手が放棄するリソースを永遠に待つ状態。
nice
とrenice
:プロセスの優先順位を変更。
- asyncio(Python):非同期 IO をサポートする Python のライブラリ。
- OpenMP:C/C++や Fortran で並列計算を行うための API。
- 例:ウェブスクレイピング、大規模なデータ処理、シミュレーションなど、並行処理を活用するプロジェクト。