`

ruby多线程

    博客分类:
  • RUBY
阅读更多
Ruby的Monitor库可以方便的实现这个功能,看下面的代码:

require 'monitor'
class Counter
   attr_reader :count
   def initialize
     @count = 0
     super
   end
   def tick
     @count += 1
   end
end
class Counter2 < Monitor
   attr_reader :count
   def initialize
     @count = 0
     super
   end
   def tick
     synchronize do
       @count += 1
     end
   end
end
c = Counter.new
t1 = Thread.new { 10000.times { c.tick } }
t2 = Thread.new { 10000.times { c.tick } }
t1.join
t2.join
puts c.count
c = Counter2.new
t1 = Thread.new { 10000.times { c.tick } }
t2 = Thread.new { 10000
t1.join
t2.join
puts c.count


分享到:
评论

相关推荐

    Ruby 多线程的潜力和弱点分析

    Web 应用大多是 IO 密集型的,利用 Ruby 多进程+多线程模型将能大幅提升系统吞吐量。其原因在于:当Ruby 某个线程处于 IO Block 状态时,其它的线程还可以继续执行。但由于存在 Ruby GIL (Global Interpreter Lock)...

    Ruby多线程编程初步入门

    主要介绍了Ruby多线程编程初步入门,线程是Ruby编程学习当中的重点和难点,需要的朋友可以参考下

    多线程和并行程序设计

    多线程和并行程序设计思路 区别以及代码实现..............

    初步讲解Ruby编程中的多线程

    Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码。 创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new {...

    Working with Ruby Threads(完整版)

    Working With Ruby Threads(完整版),非常帮的ruby 多线程书籍

    迄今为止最全面的分布式主键ID生成器,多语言新雪花算法(SnowFlake IdGenerator).zip

    原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 迄今为止最全面...

    多语言雪花算法里最好用的主键ID生成工具.zip

    原生支持 C#/Java/Go/Rust/C/SQL 等等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库。支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成数字型唯一ID。兼容...

    最全面的分布式主键ID生成器

    原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。

    idgenerator分布式主键ID生成器

    原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。

    迄今为止最全面的分布式主键ID生成器优化的雪花算法(SnowFlake)雪花漂移算法在缩短ID长度的同时具备高瞬时并发处理能力

    原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 Python、Node.js、Ruby 多线程安全调用动态库(FFI)。支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。 这是优化的雪花...

    lasercrack:Lasercrack-可扩展的Ruby暴力破解框架

    lasercrack-可扩展的Ruby多线程暴力破解框架 运行环境 支持系统:linux/Mac/windows,windows需要安装ruby devKit环境同时安装mysys2库。 支持语言:Ruby 2.2.2及以后的版本 支持爆破模块 ftp ssh telnet smb mysql ...

    Ruby中使用多线程队列(Queue)实现下载博客文章保存到本地文件

    Ruby:多线程下载博客文章到本地的完整代码 代码如下: #encoding:utf-8 require ‘net/http’ require ‘thread’ require ‘open-uri’ require ‘nokogiri’ require ‘date’ $queue = Queue.new #文章列表页数 ...

    Ruby1.9.1released.zip

    2、ruby 1.9正式支持内核多线程机制,可以大大提高ruby作为服务端程序的并发处理能力 3、ruby 1.9还引入了纤程这样的多任务并发处理机制,提供了轻量级并发处理能力。 等等。ruby 1.9.1 的下载地址是:ftp://ftp....

    Ruby并发编程框架Celluloid.zip

    Celluloid 是一个 Ruby 语言的并发面向对象编程框架,可让你轻松构建多线程程序。 标签:Celluloid

    turbine:Ruby的容错多线程流处理

    Ruby的容错多线程流处理。 Turbine是基于Zookeeper构建的面向性能的流处理库。 它目前支持Kafka作为消息队列,但是被设计为可插入的,以便将来可能支持其他消息队列。 涡轮机不是工作队列,并且缺少您希望通过工作...

    crawler:Ruby中的多线程Web搜寻器

    Ruby中的多线程Web搜寻器设置: 像其他任何Rails数据库一样,创建config/config.yml ,并设置database部分运行rake db:migrate创建数据库表用法: $ ruby crawler.rb &lt;modules&gt; 可用(演示)模块: imdb_serie imdb_...

    浅析Python中的多进程与多线程的使用

    在批评Python的讨论中,常常说起Python多线程是多么的难用。还有人对 global interpreter lock(也被亲切的称为“GIL”)指指点点,说它阻碍了Python的多线程程序同时运行。因此,如果你是从其他语言(比如C++或Java)...

Global site tag (gtag.js) - Google Analytics