`
garyli
  • 浏览: 172517 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby 线程安全类 Monitor

    博客分类:
  • Ruby
阅读更多

  使用Monitor进行线程的同步比较安全

require 'monitor'
class Counter
	attr_reader :count
	def initialize
		@count = 0
	end
	
	def tick
	  lock = Monitor.new
		lock.synchronize do
			@count += 1
		end
	end
end

c = Counter.new
t1 = Thread.new {100000.times {c.tick}}
t2 = Thread.new {100000.times {c.tick}}
t1.join
t2.join
puts c.count
#200000

 

分享到:
评论

相关推荐

    Ruby源码阅读工具monitor.zip

    monitor是一个在浏览器中显示ruby方法调用栈的gem monitor是基于unroller gem的,unroller把方法调用栈打印在console下面,看起来实在不方便,我在它的基础上,把方法调用栈打印到浏览器上,用的是sinatra,代码和...

    Ruby 方法、类

    Ruby 方法、类 : Ruby 方法、类 ruby-9-method.mp4 ruby-9-method.mp4

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

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

    ruby线程实现生产者消费者问题示例(队列Queue实现线程同步)

    Ruby线程实现经典的生产者消费者问题,用ruby中的Queue类实现线程同步问题。 代码如下:require “thread” puts “ProAndCon” queue = Queue.new #用队列Queue实现线程同步 producer = Thread.new do 10....

    Ruby的纤程框架Goliath.zip

    Goliath 是一个开源的非堵塞(异步) 的 Ruby Web 服务器框架,由 PostRank 开发。它是一个轻量级的框架提供高性能、Rack API 和中间件支持,配置简单,完全异步处理。 示例代码: require 'goliath' class ...

    仓鼠:Ruby的高效,不可变,线程安全的Collection类

    仓鼠 高效,不可变且线程安全的Ruby收集类。 仓鼠提供了6种: , , , , 和 (用作不可变队列或堆栈)。 仓鼠的收藏是一成不变的。 每当您修改仓鼠集合时,原始文件都会保留下来,并返回修改后的副本。 这使它们...

    Ruby多线程编程初步入门

    Ruby的可以使用 Thread 类很容易地编写多线程程序。 Ruby线程是一个轻量级的和高效的在代码中实现并行性。 创建Ruby线程: 要启动一个新线程,关联一个块通过调用Thread.new。将创建一个新的线程执行的代码块,原始...

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby中$~,$?是线程安全的么?

    NULL 博文链接:https://l-d.iteye.com/blog/1488038

    ruby教程.rar

    线程 安全模型 正则表达式 Ruby的语法 字句构造 程序 变量和常数 字面值 操作符表达式 控制结构/异常处理 方法调用 类/方法的定义 标准库 内部函数 内部变量 内部常数 内部类/模块/异常类 附加...

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    zeitwerk:Ruby的高效且线程安全的代码加载器

    Zeitwerk是用于Ruby的高效且线程安全的代码加载器。 给定,Zeitwerk能够按需(自动加载)或预先(紧急加载)加载项目的类和模块。 您require为自己的文件编写require调用,而是可以知道自己的类和模块随处可见,...

    Ruby-RubyonRails应用程序的安全注意事项清单

    Ruby on Rails应用程序的安全注意事项清单

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    Ruby-Stringex一些实用的Ruby字符串扩展类

    Stringex 一些实用的Ruby字符串扩展类

    ruby2ruby.zip

    ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby

    Ruby完全自学手册 下

    《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...

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

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

    Ruby编程,Ruby编程,

    Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

Global site tag (gtag.js) - Google Analytics