Ruby 多线程.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ruby 多线程

Ruby 多线程 Ruby 多线程 每个正在系统上运⾏的程序都是⼀个进程。每个进程包含⼀到多个线程。 线程是程序中⼀个单⼀的顺序控制流程,在单个程序中同时运⾏多个线程 成不同的 ⼯作,称为多线程。 Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是⼀个轻量级的,可以以 ⾼效的⽅式来实现并⾏的代码。 创建 Ruby 线程 要启动⼀个新的线程,只需要调⽤ Thread .new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执⾏代码 } # 线程 #1 执⾏代码 实例 以下实例展⽰了如何在Ruby程序中使⽤多线程: #!/usr/bin/ruby def func1 i=0 while i=2 puts func1 at: #{Time now} sleep (2) i=i+1 end end def func2 j=0 while j=2 puts func2 at: #{Time now} sleep (1) j=j+1 end end puts Started At #{Time now} t1=Thread new{func1()} t2=Thread new{func2 ()} t1 join t2 join puts End at #{Time now} 尝试⼀下 » 以上代码执⾏结果为: Started At Wed May 14 08:21:54 -0700 2014 func1 at: Wed May 14 08:21:54 -0700 2014 func2 at: Wed May 14 08:21:54 -0700 2014 func2 at: Wed May 14 08:21:55 -0700 2014 func1 at: Wed May 14 08:21:5 -0700 2014 func2 at: Wed May 14 08:21:5 -0700 2014 func1 at: Wed May 14 08:21:58 -0700 2014 End at Wed May 14 08:22:00 -0700 2014 线程⽣命周期 1、线程的创建可以使⽤Thread .new ,同样可以以同样的语法使⽤Thread .start 或者 Thread .fork这三个⽅法来创建线程。 2、创建线程后⽆需启动,线程会⾃动执⾏。 3、Thread 类定义了⼀些⽅法来操控线程。线程执⾏Thread .new 中的代码块。 4 、线程代码块中最后⼀个语句是线程的值,可以通过线程的⽅法来调⽤,如果线程 执⾏ 毕,则返回线程值,否则不返回值直到线程执⾏ 毕。 5、Thread .current ⽅法返回表⽰当前线程的对象。 Thread .main ⽅法返回主线程。 6、通过 Thread . oin ⽅法来执⾏线程,这个⽅法会挂起主线程,直到当前线程执⾏ 毕。 线程状态 线程有5种状态: 线程状态 返回值 Runnable run Sleeping Sleeping Aborting aborting Terminated normally false Terminated with exception nil 线程和异常 当某线程发⽣异常,且没有被rescue捕捉到时,该线程通常会被⽆警告地终⽌。但 是,若有其它线程因为Thread#join的关系⼀直等待该线程的话,则等待的线程同样会 被引发相同的异常。 begin t = Thread.new do Thread.pass # 主线程确实在等join raise unhandled exception end t.join rescue p $! # = unhandled exception end 使⽤下列3个⽅法,就可以让解释器在某个线程因异常⽽终⽌时中断运⾏。 启动脚本时指定-d选项,并以调试模时运⾏。 ⽤Thread.abort_on_exception设置标志。 使⽤Thread#abort_on_exception对指定的线程设定标志

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档