2016-05-13 259 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

也可以编写在单个进程的单个线程中交织脚本处理的代码。必须小心翼翼地编写它才能做到这一点,并且是比以前更先进的技术。 –