FC2ブログ
プロセスとスレッドを理解した
ついに、 プロセス と スレッド を理解した。

スレッドは 軽量プロセス というだけあって、

やはり プロセスを理解してないと理解に苦しむのではないだろうか。

どちらも マルチタスクができるようにうまくなっているものだなあ。




簡単にまとめてしまうと。

プロセスは プログラムが動いている状態

つまり .exe(実行ファイル) が動いていれば 

それがプロセスとなる。

要点は プロセスがプロセスを産めるということ。

fork( )を使ってやればプロセスを産むことができる。

どうやって産むかというと、

プログラム中に fork( ) を書いた行より

上の行でやったものを(ほぼ)まるまるコピーしたものを

プロセスとして生成する。以下、生成したものと、生成されたもので

fork( ) 以下の行を実行する。 このため、fork( )のあとには

生成したもの(親)と 生成されたもの(子)で処理をわけるため

if文を用いることが極めて高い。


スレッドのほうはというと、

関数を同時に複数動かす といった感じだろう。

本来、

/* なにかのコード */

function1( );

function2( );

/* なにかのコード */


みたいなプログラムになっているとき

function2( );が実行されるのは

もちろん、

function1( );が実行された後だ、

しかし これを同時に実行したい場合がある。

こういった場合 両者をスレッドとして処理することで

同時に実行できる。




驚いたことにC言語でもスレッドが可能だった!!

しかし、これは色々と規格の統一などで コーディングには

かなりの注意を必要としそうである。

Linuxでは スレッドのくせに ps すると プロセスが増えているように見えるようだ。

そういうことで 言語自体で スレッドをサポートしている

Javaってすごいんだなぁと 感心した。



長々とまとめましたが

理解するのは やはり簡単なコードを書くのが一番だと思う。

といっても 初めから書けるわけがないので、

簡単なコードを見つけてこないとダメなのだが、

これに骨が折れた。
スポンサーサイト



東京の夜
簡単なコードを見つけるとか
簡単なコードを載せてくれるサイトってなかなか
見つからないですよね・・・。

大抵、妙にコメントが多いコードだったり、、、

「そこでこういう動作するのはわかってんだよ!なんでそう書いたか知りたいんだよ!」
と言いたいんです><;;
2006/10/13 (金) 23:26:21|URL |#-
木村
おお、うちらと同じとこやってんじゃん!
事前forkで苦戦中。マルチタスクってむずかしい…
2006/10/14 (土) 03:08:04|URL |#-
ビンゴ中西
>東京の夜さん
はじめまして。
そうなんですよね。 スパッとわかりやすいコードにしてくれたらいいんですが。何故か学習すべきところより他のところに手がこってるページが多いです。

>木村
おお。そうなの!
いや、メインメモリを意識すればfork( )は簡単だ。
2006/10/18 (水) 00:39:47|URL |#-
コメントを投稿する
Name:
URL:
Comment:

秘密:管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事にトラックバックする(FC2ブログユーザー)
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

ブロとも申請フォーム

この人とブロともになる

| ホーム |