爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 188|回复: 2
收起左侧

thread

[复制链接]
发表于 2006-10-8 00:09:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
用来表示Ruby的线程的类。
Thread使得并行编程成为可能。线程是一种共享内存空间并可同时运行的控制流。但由于目前Ruby解释器采用时间片轮转法来控制线程,所以使用线程后并不会提高程序的运行速度。
启动程序时生成的线程被称作主线程。若主线程因为某些原因而终止运行时,其他的所有线程和整个程序也会终止运行。若因为用户的干预而引发了某些异常时,它们会被送往主线程。
若启动线程时指定的块结束运行时,该线程也将终结。块的终结包括正常结束和因异常等引起的非正常结束两种情况。
Ruby的线程调度工作采用的是带优先顺序的循环复用法。每隔一段时间或运行中的某线程主动弃权时,就会进行调度。此时将从可运行的线程中挑选一个优先度最高的线程,并将context交给它。
[url=]线程和异常[/url] 若某线程内发生了异常,且没有被线程内的 rescue 捕捉到时,通常该线程会被停掉,而不会发出警告。但是,如果这时正好有其它线程因Thread#join而等待这个被停掉的线程时,则会在等待线程中再次引发相同的异常。
begin  t = Thread.new do    Thread.pass    # 主线程确实是在等join    raise "unhandled exception"  end  t.joinrescue  p $!  # => "unhandled exception"end另外,下列方法可以保证在某线程因发生异常而终止工作时,整个解释器就会被中断。
若使用了上述3个方法之一的话,整个解释器就会被中断。
[url=]线程的状态[/url] 线程的运行状态如下。可以使用Object#inspectThread#status来查看线程的状态。
p Thread.new {sleep 1} # => #<Thread:0xa039de0 sleep>[url=]run (运行 or 可运行状态)[/url] 新生成的线程或那些被run以及wakeup方法唤醒的线程就是这种状态。有的线程会因为join而一直等待别的线程终止运行。而一旦这些线程终止运行,那些一直处于等待状态的线程也会变成这种状态。
处于该状态中的线程是“活”的。
[url=]sleep (挂起状态)[/url] 那些被Thread.stopjoin 方法挂起的线程就是这种状态。
处于该状态中的线程是“活”的。
[url=]aborting (终止处理中)[/url] 那些被kill等扼杀的线程会暂时变为这种状态。有时还会从该状态变为挂起状态(stop)。
处于该状态中的线程仍然是“活”的。
[url=]dead (终止状态)[/url] 那些被kill等扼杀的线程就会变为这种状态。若处于该状态中的线程已经完全没用的话,就由GC将其清出内存。
处于该状态中的线程是“死”的。
8 -2.gif
发表于 2006-10-8 00:12:34 | 显示全部楼层
晕,发错位置了??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-8 00:21:35 | 显示全部楼层
没有发错,这是有关thread参数的文章
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-8-2 19:36

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表