1. 我们通常说的Ruby,一般指的MRI 即"Matz's Ruby Implementation", CRuby or MatzRuby,MRI的在解释器里的Ruby线程是Green Thread,而且不幸的,这些线程不予能并行地调度,因此一次只能跑一个线程。
不过扩展的C类库(比如Fiber),可以并行地运行多个C线程。
2. 接下来是YARV(即Yet Another Ruby VM),YARV的线程是以POSIX或者WinNT线程实现的,它采用了Global Interpreter Lock (GIL)来确保在任何时候只有一个Ruby线程可以被调度。
和MRI一样,C线程可以和Ruby线程同时运行。未来, GIL可能会被fine-grained locks取代,这样越来越多的代码就可以并行地运行,不过这个还没提上议事日程呢。
3. JRuby以原生线程的方式实现Ruby线程,这儿的“原生线程”当然指的是"JVM线程“。JRuby并未增加额外的锁。因此,这些线程是否能并行的运行,取决于JVM,有些JVM采用了OS线程而有些只是Green Treahd.
4. XRuby也是以JVM线程的方式实现Ruby线程。
5. IronRuby也是以原生线程的方式实现ruby线程,这儿的“原生线程”指的是CLR线程,Ironruby也未增加额外的锁,因此只要你的CLR支持多线程,你的Ironruby线程就能并行
运行。
6. Ruby.NET也是以CLR线程的方式实现Ruby线程。
7. Rubinius在它的虚拟机中以Green Thread的方式实现Ruby线程。特别之处的是Rubinius的虚拟机十分轻巧,具有非常弹性的concurrency/parallelism/non-local的结构,称为“任务”,而其他的concurrency constructs (Threads in this discussion, but also Continuations, Actors and other stuff) are implemented in pure Ruby, using Tasks.
Rubinius 现在无法并行地调度线程,虽然正佳这项特性并无太大问题。 Rubinius可以在一个进程的多个POSIX线程中运行多个虚拟机实例。由于线程是采用Ruby语言实现的,因此它们可以像其他Ruby对象一样,被串行化到另一个线程中的另一个虚拟机实例。 (That's the same model the BEAM Erlang VM uses for SMP concurrency. It is already implemented for Rubinius Actors.)
8. MacRuby开始只是YARV在Objective-C运行时和CoreFoundation Cocoa Frameworks上的实现. It has now significantly diverged from YARV, but AFAIK it currently still shares the same Threading Model with YARV.
9.
Cardinal is a Ruby Implementation for the Parrot Virtual Machine. It doesn't implement threads yet, however, when it does, it will probably implement them as Parrot Threads.
10.
MagLev is a Ruby Implementation for the GemStone/S Smalltalk VM. I have no information what threading model GemStone/S uses, what threading model MagLev uses or even if threads are even implemented yet (probably not).
11.
HotRuby is not a full Ruby Implementation of its own. It is an implementation of a YARV bytecode VM in JavaScript. HotRuby doesn't support threads (yet?) and when it does, they won't be able to run in parallel, because JavaScript has no support for true parallelism. There is an ActionScript version of HotRuby, however, and ActionScript might actually support parallelism.
分享到:
相关推荐
2、ruby 1.9正式支持内核多线程机制,可以大大提高ruby作为服务端程序的并发处理能力 3、ruby 1.9还引入了纤程这样的多任务并发处理机制,提供了轻量级并发处理能力。 等等。ruby 1.9.1 的下载地址是:ftp://ftp....
Ruby的容错多线程流处理。 Turbine是基于Zookeeper构建的面向性能的流处理库。 它目前支持Kafka作为消息队列,但是被设计为可插入的,以便将来可能支持其他消息队列。 涡轮机不是工作队列,并且缺少您希望通过工作...
做得好 GoodJob是Ruby on Rails的基于Postgres的多线程ActiveJob后端。 受和启发,GoodJob旨在与Ruby on Rails,ActiveJob和Postgres最大限度地兼容,从而使它们对大多数工作负载都简单易行。 专为ActiveJob设计。 ...
AWS Recon一个多线程AWS库存收集工具。 该工具的创建者经常需要能够有效地收集大量AWS资源属性和元数据,以帮助客户端了解其云安全状况。 有一些工具(例如AWS Config,CloudMapper,CloudSploit,Prowler)可以进行...
支持多线程和SSL。 安装 由于有一些C代码,因此需要C编译器(GCC或Apple的clang)。 在基于Debian的系统上,可以通过以下方式安装它: apt-get install build-essential Debian系统还需要其他的ruby开发头文件: ...
SlickEdit是一个跨平台(在9种不同的工作平台上可以工作)的, 支持超过40种编程语言的代码编辑器。 目前支持AIX、HP-UX、 Linux 32-bit、Linux 64-bit、 Mac OS X、Solaris ...多线程 支持Ruby语言调试 动态调试
SlickEdit是一个跨平台(在9种不同的工作平台上可以工作)的, 支持超过40种编程语言的代码编辑器。 目前支持AIX、HP-UX、 Linux 32-bit、Linux 64-bit、 Mac OS X、Solaris ...多线程 支持Ruby语言调试 动态调试
原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 迄今为止最全面...
原生支持 C#/Java/Go/Rust/C/SQL 等等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库。支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成数字型唯一ID。兼容...
艾尔 一个支持Ruby中异步方法调用的小型框架。描述 ayl(随便或喜欢或…)是一个小型框架,它简化了在Ruby中实现异步方法调用的过程。 从根本上讲,它通过传递要在单独的处理线程(可能是线程,可能是单独的进程等)...
特征扫描文件中的链接,或抓取网页以获取链接具有--max-threads参数的多线程(快速) 重定向到有效链接的链接的警告红色/绿色/黄色输出100%的测试覆盖率适用于Octopress或Jekyll安装将link-checker gem添加到项目的...
对属性,回调和验证以及线程安全性能方法的丰富支持。 减少过程服务对象的控制器负担。 查看这篇了解有关如何使用ActiveInteractors的速成班的信息。 阅读以获取详细的用法信息。产品特点线程安全性能调用或组织多...
原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。
原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。
lasercrack-可扩展的Ruby多线程暴力破解框架 运行环境 支持系统:linux/Mac/windows,windows需要安装ruby devKit环境同时安装mysys2库。 支持语言:Ruby 2.2.2及以后的版本 支持爆破模块 ftp ssh telnet smb mysql ...
原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 这是优化的雪花...
callback-adapter使回调支持的接口适应标准接口,因此可以在标准应用程序中安全地对事件或多线程库(如进行线程同步使用,而无需进行必要的范式转换。 一些简单的例子: require "callback-adapter" class Foo ...
支持多线程,充分利用 CPU 资源,支持多用户。 优化的 SQL 查询算法,有效地提高查询速度。 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
GetText,但速度提高了12倍,垃圾减少了530倍,干净的名称空间(8对26),简单且线程安全! 它支持多个后端(.mo,.po,.yml文件,数据库(ActiveRecord +任何其他),链,记录器),并且可以轻松扩展。 比较 杂凑 ...
jServe 是一个用 Java 构建的多线程 Web 服务器,它帮助我在我喜欢编写的真实应用程序中学习 Java 概念和一般编程。 我知道 Web 服务器并不是什么新鲜事物,已经有很多很棒的服务器了,但这就是我想编写 jServe 的...