Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> マルチスレッドプログラミングでのLinux

マルチスレッドプログラミングでのLinux

  

Linuxでシェルマルチスレッドプログラミングを達成するためにどのようにアプリケーションのレスポンスを向上させるために持っている、マルチCPUシステムより効果など、Linuxシェルマルチスレッドプログラミングの例の下であなたに戻って乗るだろう小さなシリーズを、次の一緒の理解の下で、マルチスレッドプログラミングのプロセス、。

#! /ビン/バッシュ

#———————————————————————————&のndash;

#この例では、シミュレートされたマルチスレッド待機有するスキル
、リードコマンド

#これを示します;スキルは、多くの場合、SSHログイン、ピングので、このプロセスは比較的遅く、CPUの

#また、マルチスレッド制御
を記述する

#&mdashの単一のケースを費やしていないなど、複数のホストを、確認するために使用されています————————————————————————— —&のndash;

関数a_sub

{

#スレッド(サブプロセス)としてここで定義された関数を

睡眠3つの#スレッド効果は睡眠3S

}

tmp_fifofile =&'である;を/tmp /$のFIFO'.はmkfifo $ tmp_fifofile#FIFO型ファイル

を作成します。 EXEC 6 "" $のtmp_fifofile#1 FD6ポイントFIFO型

RM $ tmp_fifofile本明細書
定義スレッドのスレッド= 15#番号


ための

((i = 0; iは"$スレッド、私は++));エコー

は行わない" &#038を、6の#$スレッドは、実際には


ためFD6にキャリッジリターン

を置いています( (i = 0; i「の50; I ++));を行う#50サイクル、50はホストとして理解、または他の
は、

FD6から、一度-u6#読み取る-u6コマンドを読み取ることができますキャリッジを減算し、その後、

#1 FD6をダウン行わない場合キャリッジ、

{ここで#サブ
制御を達成するために、このスレッドの数で停止プロセスは、バックグラウンド
であり、開始

a_sub&&

{#子プロセス本明細書ロジックを決定するために使用することができる

エコー' a_subが終了&'れます。

}

| |

{エコー'サブエラー'

}

エコー「&場合の処理​​の終了後#6、FD6に再び復帰によって、すなわちアップ#近いDF6出口 -;すべてのバックグラウンド・サブプロセスのために行わ待機#待ちがを終了する

execの6「&マイナス読み取り-u6

}

&#038に0

説明:

このプログラムは
コマンド

はmkfifo TMPFILE

とLinuxのコマンドは、

はmknod TMPFILE P
>

効率的ですか?同じ果物。違いは、POSIX標準はmkfifoで、それを使用することをお勧めします。このコマンドは、先入れ先出しパイプファイルを作成し、ファイル識別子6を割り当てます。パイプファイルは、プロセス間通信の方法ですが、
であることに注意することが重要である

execの6「」$のtmp_fifofile番号のFIFOますFD6ポイントタイプ

ファイル$にはフレーズが存在しない場合tmp_fifofileまたは&読み出したデータをファイルまでパイプから読み出されるまで、6データを書き込むために、プログラムがブロックされます。あなたがプログラムの実行中にファイルの種類をブロックすることなく、FIFOにデータを書き込むために続けることができ、読み出したプログラムを読み込むためのデータが保存されます後に上記の文の実装。

のコマンドを実行して:

時間。 /multithread.sh "を/dev /null

最終動作時間:50/15 = 3つの群(n = 15)+ 1基(5" 15からなる群)= 4基は、各グループに時間がかかります:3秒、

3 * 4 = 12秒です。

従来の非スレッド・コードの計算時間:50 * 3 = 150秒。

マルチスレッドプログラミングの使用も興味を持って友人がそれを試してみてください、プログラムの構造を改善することができ、導入上のLinuxのシェルの下で、マルチスレッドプログラミングの例です。

Copyright © Windowsの知識 All Rights Reserved