seegongsik
オペレーティングシステム

わかりやすく スレッド とは

一つの仕事をいくつもの流れに分けて、同じ作業場で同時に進めることができます。その流れがスレッドです。

01

一人で何本もの手を

料理人が一人、台所で働いています。スープを煮ながら野菜を切り、ときどき火の様子も見ます。
仕事は料理一つなのに、その中でいくつもの流れを同時にこなしているのです。台所も一つ、材料棚も一つで、みんなで使います。
コンピュータも、一つの作業の中でこうしていくつもの流れに分けて働けます。その流れ一本一本を、スレッドと呼びます。
流れを分けておけば、スープが煮えるのを待つあいだも手を休めず、別の流れをこなせます。

作業(料理)料理人スープを煮る野菜を切る火を見る材料棚(共有)

仕事は一つ、その中の流れはいくつも。作業場と材料は共有します。

スレッドとは、一つの作業の中で同時に進む、いくつもの流れのことです。

02

他人どうしの二軒と、一軒の中のいくつもの部屋

前に、プロセスはそれぞれ自分の空間を別々に持つと話しました。二つのプロセスは、塀をはさんだお隣どうしのようなもので、勝手に入ることはできません。
ところが一つのプロセスの中のスレッドたちは、一軒の家に住む家族のようなものです。部屋は分かれていても、居間と冷蔵庫は共有します。
だからスレッドどうしは、情報をやりとりしやすいのです。同じ材料棚を見ているからです。プロセスどうしでは、それがもっと手間です。
塀は面倒に見えても、お隣で水もれがあってもわが家はぬれないように守ってくれる、ありがたい壁でもあります。

プロセス:壁スレッド:共有他人どうし共有一つの家族居間・冷蔵庫を共有

プロセスは塀をはさんだお隣、スレッドは一軒の家の家族です。

プロセスは空間を別々に使い、一つのプロセスの中のスレッドたちは空間を共有します。

03

流れを増やしてみる

一つの作業をいくつの流れに分けるか、自分で変えてみましょう。
流れが一本なら、仕事を順番に一つずつこなします。流れを増やすと、みんなが同じ材料棚を見ながら、いくつもの部分が同時に進みます。
流れが多くなると、仕事が早く終わることがあります。ただ、みんなが同じ台所を使うので、多すぎるとおたがいの道をふさいでしまいます。
流れを二倍にしても仕事がちょうど二倍速くなるわけではないのは、狭い台所でおたがいに道をゆずる時間が増えるからです。

材料棚(共有)
流れ 1
流れ 2
流れの数2
流れを増やすと、いくつもの部分が同時に進みます。ただ棚は一つなので、一緒に分け合います。

流れの数を変えると、一つの作業がどう分かれて進むかがわかります。

流れを増やすと同時に多く進みますが、同じ空間を分け合うことは変わりません。

04

共有すると速いけれど

スレッドたちが材料棚を共有するのは、大きな利点です。別々に運んだり写したりしなくても同じものをすぐ見られるので、軽くて速いのです。
でも裏の面もあります。二つの流れが同じ瞬間に同じ材料に触ろうとすると、ぶつかることがあります。片方が塩を入れているあいだに、もう片方も入れてしまうようなことです。
だから共有は便利ですが、いつだれが触るかには少し注意が必要です。この話は、少しあとの競合状態のレッスンで続きます。
それでも共有を選ぶのは、流れごとに材料棚を別にコピーしておくと、そのほうが重くて遅いからです。

利点材料棚同じものを見るから軽くて速い両面注意同時に触るとぶつかる

共有は軽くて速いですが、同時に同じものに触るとぶつかります。

空間を共有すると速くて軽いですが、同じものに同時に触ると問題が起きることがあります。

05

一枚にまとめる

覚えておくことは三つだけです。
一つ目、スレッドは一つの作業の中のいくつもの流れです。仕事は一つでも、その中でいくつもの部分が同時に進みます。
二つ目、同じ空間を分け合います。プロセスどうしのあいだには塀がありますが、一つのプロセスの中のスレッドたちは同じ材料棚を見ます。三つ目、だから軽くて速いけれど、注意も必要です。同じものに同時に触るとぶつかることがあるからです。
この三つがわかれば、あるアプリが一本の流れで画面を動かしながら、別の流れで裏で静かに働いて、止まらずに反応できる理由が見えてきます。

一つ目
スレッドは一つの作業の中の何本もの流れ。仕事は一つ、その中の部分が同時に進む。
二つ目
同じ空間を分け合う。プロセスは壁、スレッドは同じ棚を見る。
三つ目
軽くて速いが注意。同じものを同時に触るとぶつかることがある。

一つの作業の中のいくつもの流れ、空間の共有、軽いけれど注意。

一言でいうとスレッドとは、一つの作業をいくつもの流れに分けて、同じ空間で一緒に進めることです。
← オペレーティングシステム
このページがお役に立ったなら支援する