
プロセスとスレッドの違いとは?仕組みや使い分け・タスクとの違いもプログラマーがスポーツに例えてわかりやすく解説
スレッド:スポーツで言えば各メンバーの役割
次はスレッドです。チームのメンバーは1試合でいくつもの役割をこなします。例えば、野球でもサッカーでも、攻撃時と守備時では同じ人でも役割が違いますよね。また、同じ攻撃時でも試合状況によって積極的に攻めることも、手堅く攻めることもあります。状況に応じて同じメンバーでも役割が違うわけです。
コンピューターも状況に応じて役割を切り替えます。そのひとつひとつの役割がスレッドです。例えば多くのWebサイトで広告が表示されますよね。単なるイメージではなく、動画や一定時間でイラストが切り替わるものもあります。これもスレッドのおかげ。ユーザーが操作していない間、広告を表示するスレッドが動画を流したり、イラストを切り替えたりしています。コンピューターはとても高速なので同時に色々なことをしているように見えますが、実際にはスレッドが切り替わりつつ動いているのです。

パソコンやスマホのアプリは同時に色々なことをしているように見えるが、実際にはプロセスやスレッドといったものを切り替えながら動いているぞ。それがとても高速なので同時に動いているように見えるわけだ。そのプロセスやスレッドはスポーツのチームのようなもの。プロセスはチームメンバーで、スレッドはそのメンバーが時々で果たす役割だ。次は仕組みやなぜスレッドが必要かを見ていくぞ。
プロセスとスレッドの仕組みとメリット、デメリット

image by iStockphoto
プロセスとスレッドの違いをスポーツなどのチームに例えて、メンバーとその役割と説明しました。他にも仕組みの違いがあり、メリットとデメリット、使い分けがあるわけです。ここではそうした仕組みや特徴を説明します。
プロセスはまとまった仕事の単位
プロセスとはコンピューターの仕事をある程度まとまった範囲でまとめたものです。スポーツでのチーム内の役割分担のように、このプロセスはこういうことをするというものが決まっています。そのため、プロセスを切り替えるのには準備と時間が必要。例えば、野球でもサッカーでも選手交代となれば手続きと時間が必要ですよね。野球ならば試合を中断しますし、サッカーでも交代中は一時的に人数が減ってしまいます。
コンピューターでもプロセスはある程度まとまった仕事をこなすもの。プロセスを新たに作ることや、切り替えるには時間がかかります。人間から見れば十分高速なのですが、コンピューターの時計では長時間かかる作業です。そのため、あまり頻繁にプロセスを切り替えることはありません。
スレッドはある仕事の中の細々した作業
スポーツでも状況に応じて1人の選手が色々な役目をこなします。ボールの位置や選手の配置でオフェンスとディフェンスを切り替え、マークする選手も変わりますよね。そのたびに選手交代している暇はありませんし、一瞬で切り替えないといけません。
コンピューターの世界でも一瞬で切り替えなければならないケースがあります。そのようなときにはプロセスではなくスレッドを使うのです。プロセスとスレッドの違いは切り替える速さが遅いか早いかになります。
独立しているかどうか?プロセスとスレッドの違い
ではなぜプロセスは遅く、スレッドは早いのでしょう。それは仕組みの違いです。プロセスはチームのメンバーで、スレッドはその人の果たす役割と説明しました。ある選手が一瞬で違う役割に切り替えられるのは、その人が練習して身体が覚えているから。スレッドはプロセスの中にあって、一瞬で切り替えることができるのです。
一方、プロセスはチームのメンバー。それぞれ違う人ですから経験も練習内容も違います。プロセスもそれぞれ独立した別人です。だから入れ替わるのには時間がかります。スレッドは役割と説明しましたが、ある選手が過去に練習してきた経験と言い換えた方がよいかもしれませんね。人が入れ替わるのと、ある選手が過去の経験から反射的に動きを変えることの違いがプロセスとスレッドの違いになります。
\次のページで「同じ?違う?タスクとプロセス、スレッド」を解説!/