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のシェルの下で、マルチスレッドプログラミングの例です。
sshの他のLinuxマシンに接続し、時にはそれが接続できるにもかかわらず、このような問題が存在しますが、接続は非常に遅く、非常に時間がかかるときに、小扁は、解決する
はディスククォータ制限は不合理設定したため、いくつかのケースでは、システムに影響を与えないように、ディスク容量の管理者にユーザーのディスク領域クォータ制限の過度の使用を避けるために、ディスク容量が得られことは、あなたはその後、十分ではありませんディスククォータを変更する必要がある、次の小シリーズではCentOS 6のディスククォータ制限を変更する方法を紹介します。 5人のユーザーを構築するための
Passwd --stdin $ username 完了 [root @ linuxidc〜]#sh au.sh ユーザーvbird1のパスワードを変更します。 passwd:すべての認証ト
PyCharmは一般的なIDE機能に使用されますが、エラーが発生した場合、多くの人はLinuxシステムにPyCharmをインストールしています何が悪いの?解決するには?次の小シリーズでは、一緒に理解す
Linuxシグナル機構とは何か、Linuxシグナル機構について説明するのはそれほど単純ではない、この記事ではLinuxシグナル機構の基本について説明します。Linuxシグナル機構についてある程度理解し