スレッド (コンピュータ)
しかし、タスクとプロセスの間に要素関係はない。
スレッドを使うことで、同一プロセス内の複数スレッドを同一メモリ空間上で実行でき、メモリ消費量などが軽減できるようになっている。しかし、このため、マルチスレッド処理のプログラミングにおいては、同じデータを複数のスレッドが同時に書き換えることによる不整合に注意し、排他制御を行う必要がある。 共有ライブラリ使用時には、その共有ライブラリがスレッドセーフ(リエントラント)になっているかどうか気をつけてプログラミングしなければならない。
また、複数のスレッドが協調動作する際、お互いの処理完了を待ち合わせてデッドロック (deadlock) 状態に陥ることのないよう配慮する必要もある。
ある処理を単一のスレッドのみを用いて動作させる環境もしくは手法をシングルスレッドという。対して、複数のスレッドが同時に動作することをマルチスレッドという。 プログラム(概ねプロセス)の開始時にはメインとなるスレッドが動作する。必要に応じてその他の処理をするスレッドを作り、実行させることもできる。
基本的なモデルとして、1つのCPUコアがある瞬間に同時に実行しているのは、割り込み処理なども含めて1つのスレッド、1つのプロセス、1つのタスクであるとする。なお、あるスレッドの実行時に余ったCPU資源を別のスレッドに割り当てる技術が同時マルチスレッディング (SMT) であり、SMTが動作しているとき、内部的な物理CPUコアとしては2つ以上のスレッドを同時に実行していることになるが、アプリケーションソフトウェアの観点では、SMTによって生み出される論理CPUコア(論理プロセッサ、見せかけのコア)がある瞬間に実行できるスレッドは1つである。