2016-05-13 14 views
0

同時に4つのtclを実行したい。シェルでは、 "&"を使用して実行できます。 「&」のようなtclが並行して実行されていますか?私はちょうど1つのターミナルで4つの独立したtclを実行し、マルチスレッドを使用したくありません。複数のtclスクリプトを同時に実行する方法

+0

あなたのやろうとしていることは本当にはっきりしていません。シェルから4つのTCLプログラムを実行していますか?その場合は、&コマンドについて既に言及していますか、またはTCL内から4つのTCLサブプロセスを実行しますかパイプラインとチャネルイベントは、あなたが望むものかもしれません。 – Jackson

答えて

1

同時に実行するには、複数のプロセスまたは複数のスレッド(または複数のコンピュータ)を使用する必要があります。シェルを持つ&は、マルチプロセスアプローチを使用します。 Tclでは&も使用できますが、サブプロセスを起動するコマンドはexecの最後のの引数IIRCでなければなりません)。 、その後、あなたはこれと並行して、それらすべてを起動すると思いますが、4つのTclスクリプト、a.tclb.tclc.tclにあなたのコードを入れていると仮定すると、d.tcl

exec [info nameofexecutable] a.tcl & 
exec [info nameofexecutable] b.tcl & 
exec [info nameofexecutable] c.tcl & 
exec [info nameofexecutable] d.tcl & 

を行うには、いくつかの詳細があるかもしれませんパラメータを渡してstdioリダイレクトを設定しますが、それはそれです。

あなたはまた、約だけでこれをやっているスレッド、使用することができます。

package require Thread 

thread::create [list source a.tcl] 
thread::create [list source b.tcl] 
thread::create [list source c.tcl] 
thread::create [list source d.tcl] 

がすべてのスクリプトが実行されたときに検出取扱いを行うにはいくつかの詳細ですが、それは正確に複雑ではありません。

+0

'info nameofexecutable'コマンドはTclを実行しているプログラムの完全修飾名を返します。おそらく'/usr/bin/tclsh8.6'や 'C:/ Tcl/tclsh86.exe'です。このような場合には非常に便利です。 –

+0

1つのプロセスの1つのスレッド内にスクリプトの処理をインターリーブするコードを記述することもできます。それを可能にするために慎重に書かれなければならず、従来よりもはるかに高度な技術です。 –

関連する問題