如何在TCL中使用多线程?

如何在TCL中使用多线程?,tcl,Tcl,我正在尝试并行运行两个过程。由于TCL是解释器,它将逐个处理过程。有人能举例说明我如何在TCL中使用多线程吗?如今,在TCL中使用多线程的常用方法是使用its——它正在与TCL的核心一起开发,但在某些平台上(如各种基于Linux的操作系统),您可能需要安装单独的软件包才能获得此扩展 线程扩展实现是“每个解释器一个线程”。这意味着,每个线程只能“承载”一个Tcl解释器(及其子解释器的数量不限),但任何线程执行的代码都不能访问其他线程中承载的解释器。这反过来意味着,当您在Tcl中使用线程时,您必须掌

我正在尝试并行运行两个过程。由于TCL是解释器,它将逐个处理过程。有人能举例说明我如何在TCL中使用多线程吗?

如今,在TCL中使用多线程的常用方法是使用its——它正在与TCL的核心一起开发,但在某些平台上(如各种基于Linux的操作系统),您可能需要安装单独的软件包才能获得此扩展

线程
扩展实现是“每个解释器一个线程”。这意味着,每个线程只能“承载”一个Tcl解释器(及其子解释器的数量不限),但任何线程执行的代码都不能访问其他线程中承载的解释器。这反过来意味着,当您在Tcl中使用线程时,您必须掌握多重解释器的概念

在不同线程中运行的解释器之间交换数据的经典方法是消息传递:将脚本发布到在不同线程中运行的目标解释器的输入队列,然后等待应答。另一方面,线程共享变量(通过锁定实现共享内存)也可用。另一个可用功能是支持线程池

阅读wiki页面,然后单击

代码示例在wiki上。这是我的名片


请注意,如果您认为必须并行运行的过程主要受I/O限制(即,它们从网络读取数据和/或发送数据),而不受CPU限制(进行大量计算),使用基于事件的处理方法可能会获得更好的结果:Tcl内置了对事件循环的支持,当下一块数据可以从通道(如网络套接字)读取或写入通道时,您可以让Tcl执行代码。

如今,在Tcl中执行多线程的通常方法是使用its,它是与Tcl的核心一起开发的,但是在某些平台上(例如各种基于Linux的操作系统),您可能需要安装一个单独的包来获得此扩展

线程
扩展实现是“每个解释器一个线程”。这意味着,每个线程只能“承载”一个Tcl解释器(及其子解释器的数量不限),但任何线程执行的代码都不能访问其他线程中承载的解释器。这反过来意味着,当您在Tcl中使用线程时,您必须掌握多重解释器的概念

在不同线程中运行的解释器之间交换数据的经典方法是消息传递:将脚本发布到在不同线程中运行的目标解释器的输入队列,然后等待应答。另一方面,线程共享变量(通过锁定实现共享内存)也可用。另一个可用功能是支持线程池

阅读wiki页面,然后单击

代码示例在wiki上。这是我的名片


请注意,如果您认为必须并行运行的过程主要受I/O限制(即,它们从网络读取数据和/或发送数据),而不受CPU限制(进行大量计算),使用基于事件的处理方法,您可能会获得更好的结果:Tcl内置了对事件循环的支持,当下一个数据块可以从通道(如网络套接字)读取或写入通道时,您可以让Tcl执行代码。

此问题询问此问题询问Wow,这是一种看起来很古老的语言,它有一个多线程解释器!:-)它压倒了php、perl5、ruby和python@peterh说,花括号使一种语言看起来只少了10年的历史:BCPL是1966年的,而LISP(Tcl基本上没有语法和嵌套大括号)是1958年的(详见)。但我们离题了…@kostix,他们有多线程解释器(带操作系统级线程!)和多线程图形行走垃圾收集器吗?是的,我知道这很难发展,但我认为这应该是任何全球使用的口译语言的最低标准。令人惊讶的是,除了java(和c#)之外,目前使用的流行语言中没有一种具有此功能。我觉得这令人震惊。如果tcl能做到这一点,我会爱tcl的。如果tcl有这一点,我将其解释为完美的经典之作。@peterh有并行的GC w/o STW阶段,并且与任何“当代”脚本语言一样易于编写和阅读。我可以推荐你多学一点吗?;-)@科斯蒂克斯:是的。首先,它的语法和类模型让我哭哭啼啼,但在我习惯了一点之后,它可能会喜欢上我。:-)哇,这是一种看起来很古老的语言,它有一个多线程解释器!:-)它压倒了php、perl5、ruby和python@peterh说,花括号使一种语言看起来只少了10年的历史:BCPL是1966年的,而LISP(Tcl基本上没有语法和嵌套大括号)是1958年的(详见)。但我们离题了…@kostix,他们有多线程解释器(带操作系统级线程!)和多线程图形行走垃圾收集器吗?是的,我知道这很难发展,但我认为这应该是任何全球使用的口译语言的最低标准。令人惊讶的是,除了java(和c#)之外,目前使用的流行语言中没有一种具有此功能。我觉得这令人震惊。如果tcl能做到这一点,我会爱tcl的。如果tcl有这一点,我将其解释为完美的经典之作。@peterh有并行的GC w/o STW阶段,并且与任何“当代”脚本语言一样易于编写和阅读。我可以推荐你多学一点吗?;-)@科斯蒂克斯:是的。首先,它的语法和类模型让我哭哭啼啼,但在我习惯了一点之后,它可能会喜欢上我。:-)