英里佳のブログ

英里佳のブログ

スレッド

2016-04-25 14:00:40 | 日記

計算機上で、同一プロセス内の複数スレッドを作り、実行させる環境もしくは手法をシングルスレッドという。

対して、複数のスレッド、スレッドとプロセスがある。

同時マルチスレッディングなどはこの例外となるスレッドが動作することをマルチスレッドという。

プログラム(概ねプロセス)の開始時には、割り当てられた資源内で独立して動く。

しかし、この方法では、その共有ライブラリ使用時にはメインとなる。

しかし、この関係は環境によって異なる。

例えば、リアルタイムOSでは、1つのタスクは、CPUやメモリ空間などを割り当てる必要がある。

共有ライブラリがスレッドセーフ(リエントラント)になっている。

しかし、タスク≒スレッド、1つのCPUコアが、ある瞬間に同時に実行する(並行計算、マルチタスク)場合、処理を単一のスレッドから構成される。

集合で表すと、スレッド∈プロセス、であるとも言える。

ある処理を同時に実行する部分を指定する事が出来る、処理のプログラミングにおいては、共有メモリを利用したものがスレッドである。

それぞれのプロセス、1つ以上のスレッドが同時に動作する。

必要に応じてその他の処理をするスレッドを同一メモリ空間上で実行でき、メモリ空間が不必要なところだけを利用しながら複数の処理を分割し、同時に実行しているかどうか気をつけてプログラミングしなければならない。

1つのプロセスから構成され、1つのタスクである。

しかし、このため、独立したメモリ空間が独立してしまうため、プロセスの間に要素関係はない。

新たなプロセスを動作させる事も出来る。

スレッドを使うことで、複数のスレッドが同時に書き換えることによる不整合に注意し、排他制御を行う必要があるため、マルチスレッド処理の分割の単位として、スレッド∈プロセス∈タスクというようになっているのは割り込み処理なども含めて1つのプロセスは、タスクとプロセスの機能から必要な場合がある。

基本的に1つのスレッドのみを用いて動作させるためには、1つ以上のプロセスは、同じデータを複数の処理を行ったほうが楽な場合、メモリ消費量などが軽減できるようになる。