2016-05-13 50 views
0

我想同時運行四個tcl。在shell中,我可以使用「&」來運行。 tcl中是否有像「&」一樣同時運行的東西?我只想在一個終端中運行四個獨立的tcl,並且不想使用多線程。如何同時運行多個tcl腳本

+0

你真的不清楚你想做什麼,你是否在shell中運行了4個TCL程序,在這種情況下,你已經提到了&command,或者你是否想從TCL內運行4個TCL子進程,管道和通道事件可能是你想要的 - 查看open和chan命令。 – Jackson

回答

1

要同時運行,您必須使用多個進程或多個線程(或多臺計算機)。帶殼的&使用多進程方法。在Tcl中,您也可以使用&,但只能使用啓動子進程的exec命令(它也必須是參數IIRC的上一個)。假設你已經把你的代碼爲四個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 name ofexecutable'命令返回運行Tcl的程序的完全限定名稱,所以可能是'/ usr/bin/tclsh8.6'或'C:/ Tcl/tclsh86.exe'。這在這種情況下非常有用。 –

+0

也可以編寫在單個進程的單個線程中交織腳本處理的代碼。必須小心翼翼地編寫它才能做到這一點,並且是比以前更先進的技術。 –