`
iandaicsu
  • 浏览: 52063 次
社区版块
存档分类
最新评论

Ruby线程

    博客分类:
  • Ruby
 
阅读更多

Thread.new([arg, ...]) { ... }

Thread.start([arg, ...]) { ... }

Thread.fork([arg, ...]) { ... }

生成线程,并开始对块进行计算.

参数会被原封不动地传递给块. 这就可以在启动线程的同时,将值传递给该线程所固有的局部变量.

返回生成的线程.

 

Thread.join 

挂起当前线程,直到self线程终止运行为止. 若self因异常而终止时, 将会当前线程引发同样的异常.

若某线程内发生了异常,且没有被线程内的 rescue 捕捉到时,通常该线程会被停掉,而不会发出警告。但是,如果这时正好有其它线程因Thread#join而等待这个被停掉的线程时,则会在等待线程中再次引发相同的异常。

 

Thread.pass

将运行权交给其他线程. 它不会改变运行中的线程的状态,而是将控制权交给其他可运行的线程(显式的线程调度).

返回nil.

 

a = Thread.new { print "a"; Thread.pass;
                 print "b"; Thread.pass;
                 print "c" }
b = Thread.new { print "x"; Thread.pass;
                 print "y"; Thread.pass;
                 print "z" }
a.join
b.join

    结果:

axbycz

 

Thread.stop (暂停)

将当前线程挂起,直到其他线程使用run方法再次唤醒该线程.

返回nil.

 

Thread.exit (退出)

终止当前线程的运行。

返回当前线程。

若当前线程是唯一的一个线程时,将使用exit(0)来终止它的运行。

 

Thread.kill(thread)

终止指定线程的运行。若该线程已经终止,则不作任何动作。

返回thread。

 

 

Source:

Programming Ruby:  Threads and Processes    

http://phrogz.net/ProgrammingRuby/tut_threads.html#threadsandprocesses

Thread 参考手册

http://www.kuqin.com/rubycndocument/man/built-in-class/class_object_thread.html

Thread.pass

http://phrogz.net/ProgrammingRuby/ref_c_thread.html#Thread.pass

分享到:
评论

相关推荐

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

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

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

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

    Ruby的纤程框架Goliath.zip

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

    Ruby多线程编程初步入门

    Ruby线程是一个轻量级的和高效的在代码中实现并行性。 创建Ruby线程: 要启动一个新线程,关联一个块通过调用Thread.new。将创建一个新的线程执行的代码块,原始线程将立即从Thread.new返回并继续执行下一个语句: ...

    threads_slides:关于 Ruby 线程的 csss 演示

    Ruby 中的线程:你应该知道的 10 件事 CSSS 幻灯片 这个存储库包含我使用所有幻灯片。 要查看幻灯片,您需要下载存储库并在浏览器中打开 index.html 页面。 然后您可以使用箭头键向前和向后移动。

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

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

    多线程和并行程序设计

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

    alloc_track:轻量级 Ruby 分配跟踪器

    使用内部跟踪点 API 跟踪 Ruby 线程上未完成分配的数量。 特征 网络规模的 C 扩展 分配按线程计数 当分配超过某个阈值时可以引发异常 用法 它可用于跟踪一段时间内已分配对象的数量: require 'alloc_track/alloc...

    Working with Ruby Threads

    学习 Ruby Thread 开发技术,深度解析

    ruby教程.rar

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

    Working with Ruby Threads(完整版)

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

    Ruby编程语言

    在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...

    Ruby1.9.1released.zip

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

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

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

    Vert.x线程模型揭秘

    Vert.x是一个在JVM开发reactive应用的框架,可用于开发异步、可伸缩、高并发的Web...本文试图揭示Vert.x的线程模型的应用,通过源代码分析Vert.x如何使用线程池处理请求的,以及比较Netty和Vert.x使用线程池的异同。

    ruby学习资料大全,很全很丰富

    Ruby是"一种用于迅速和简便的面向对象编程的解释性脚本语言";这意味着什么? 解释性脚本语言: 有直接呼叫系统调用的能力 强大的字符串操作和正则表达式 开发中快速回馈 迅速和简便: 无需变量声明 变量无...

    ruby语法基础教程

    ruby语法基础教程,比较全的。 目 录 Ruby语言 1 Grant Ren 1 第一部分 Ruby语言基础 8 第一章 Ruby语言概述 8 §1.1 Ruby的历史 8 §1.2 Ruby名字的由来 8 §1.3 Ruby的特点 8 §1.4 Ruby和Python的比较 9 第二章...

    Ruby-FastGettextRuby国际化工具

    FastGettext - Ruby国际化工具。拥有更少的内存,简单,干净的名称空间和线程安全

Global site tag (gtag.js) - Google Analytics