经常提及线程,但是用线程编的程序真的是不多。仔细的学习一下吧。
线程创建
thread = Thread.new do
# Something to do
end
线程的局部变量,要注意这些局部变量只是引用,并不能复制。
thread = Thread.new do
t = Thread.current
t[:var1] = "This is a string"
t[:var2] = 365
end
x = thread[:var1] # "This is a string"
y = thread[:var2] # 365
线程状态
Thread.list # 返回所有活跃状态的线程
Thread.main # 返回主线程
Thread.current # 返回当先线程
线程函数
Thread.kill(t1) # Kill this thread now
Thread.pass(t2) # Pass execution to t2 now
t3 = Thread.new do
sleep 20
Thread.exit # Exit the thread
puts "Can't happen!" # Never reached
end
Thread.kill(t2) # Now kill t2
t3 = Thread.new do
Thread.stop # Stop the thread
end
t4 = Thread.new do
Thread.stop # Stop the thread
end
t3.wakeup # 修改线程的状态,使它变得可以运行,但不使其运行
t4.run # 唤醒进程,立即运行
t3.join # 等待t3线程结束
# Now exit the main thread (killing any others)
Thread.exit
同步线程-临界区,Thread.critical设置成True可禁止其他线程被调度。
x = 0
t1 = Thread.new do
1.upto(1000) do
Thread.critical = true
x = x + 1
Thread.critical = false
end
end
同步线程-互斥,需要用到Mutex库。
require 'threadb'
@mutex = Mutex.new
x = 0
t1 = Thread.new do
1.upto(1000) do
@mutex.lock
x = x + 1
@mutex.unlock
end
end
# 或
t2 = Thread.new do
1.upto(1000) do
@mutex.synchronize do
x = x + 1
end
end
end
还有
mutex_m库,定义的Mutex_m模块可以被混合插入类中。
Queue和
SizedQueue是支持线程的队列,不用担心同步问题。
条件变量(condition varizble)可以为线程同步提供高级控制。
分享到:
相关推荐
The Ruby Way(第2版) <br>The Ruby Way assumes that the reader is already familiar with the subject matter. Using many code samples it focuses on "how-to use Ruby" for specific applications, either ...
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
《The Ruby Way 第二版》...“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。” ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
the ruby way the ruby way
《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...
"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一了解这些知识点。 首先,`Time.now`是Ruby中获取当前时间的标准方法。它返回一个`Time`对象,表示自1970年1月1...
内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm
### Addison Wesley《The Ruby Way》第二版(2006年10月) #### 书籍概览 《The Ruby Way》是由Hal Fulton编写的关于Ruby编程语言的经典著作,该书的第二版出版于2006年10月,由Addison Wesley Professional出版社...
《The Ruby Way》是一本备受推崇的Ruby编程教程,它以独特的方式深入浅出地介绍了Ruby语言。这本书的核心理念是“如何解决问题”,作者通过实际的编程示例和问题解决策略,帮助读者理解Ruby的强大功能和优雅语法。 ...
计算机的主要功能之一就是处理数据,这不仅包括内部计算,还包括输入输出(I/O)操作,即与外部世界的交互。Ruby作为一种现代的编程语言,为用户提供了一套强大且灵活的方式来处理文件和目录。下面将详细介绍Ruby中...
Shaw is the author of the popular online books Learn Python the Hard Way, Learn Ruby the Hard Way, and Learn C the Hard Way. He is also the creator of several open source software projects like ...
Ruby is a fully object-oriented, dynamic scripting language which borrows some of the best features from LISP, Smalltalk, Perl, CLU, and other languages, and blends them into a harmonious whole. The ...
《The Ruby Way》第二版是Addison-Wesley出版社在2006年推出的一本深入浅出的Ruby编程语言教程。这本书专为初学者设计,旨在帮助读者快速掌握Ruby语言的基础和高级特性,从而轻松入门Ruby编程。Ruby是一种动态、开放...
相比之下,多线程程序则允许多个线程同时执行。在多核处理器上,这些线程可以在物理上同时运行;而在单核处理器上,则通过快速切换来模拟并行执行的效果。 2. **线程的生命周期**:一个线程从创建到销毁的过程称为...
在《The Ruby Programming Language》这本书中,作者深入浅出地介绍了Ruby的各个方面,从基础语法到高级特性的应用,是学习和理解Ruby的宝贵资源。书中涵盖了类和对象、模块、方法、变量、控制结构、异常处理、正则...