shitou's blog 

  • Home
  • About
  • Feed
  • 十人族
  • MIX BOY
  • 塌客

Episode "thread"

06
Aug

Thread学习-2

下面再详细的说下子线程和主线程的问题

t1 = Thread.new { sleep 100 }
t2 = Thread.new do
  if Thread.current == Thread.main #不会输出
    puts 'this is main thread!'
  end
  1.upto(1000) { sleep 0.1 }
end

count = Thread.list.size #3, 当前有三个线程,一个是运行该脚本的主线程(main thread),一个是t1,还有t2,由于他们正在做循环操作所以没有结束退出,还在当前线程列表中
if Thread.list.include?(Thread.main) #当前就在主线程的环境下
  puts 'Main  thread is alive' #一直都会输出
end

if Thread.current == Thread.main #因为当前环境就在主线程下操作和运行的,所以为true
  puts 'I am main thread' #输出
end

上面用到了几个线程的方法,作用从字面上就可以看出来,主要是可以比较明确的理解下主线程和子线程的关系,在上一篇线程的讲解中已经提到了线程是进程的执行单元。当进程被初始化后,主线程就被创建了。
对于绝大多数的应用程式来说,通常仅需要有一个主线程。尽管如此进程也能够创建额外的线程。

Tags: thread

2008-08-06 10:36:35, 840 reviews, comment

send to mailbox

Your email:

06
Aug

Thread学习-1

在学习Thread,下面是一个例子

t1 = Thread.new do
  i = 1
  while i <= 100000 do
    i += 1
  end
  puts 'ok, end!'
end

puts 'main thread start..'

#如果没有下面的操作,将不会看到上面的任何输出,所以可以这样理解
# 改脚本运行时相当于ruby创建了一个进程,然后又派发出一个主线程来运行该脚本,
# 线程是进程的执行单元。当进程被初始化后,主线程就被创建了。
# 对于绝大多数的应用程式来说,通常仅需要有一个主线程。尽管如此进程也能够创建额外的线程。
# t1又创建了一个子线程执行循环的操作,此时主线程比t1的子线程早结束,所以强制
# 结束了子线程,即不会看到任何输出,
# 当执行下面的t1.join时,主线程将会等待子线程的结束才退出

t1.join

Tags: thread

2008-08-06 10:22:22, 813 reviews, comment

send to mailbox

Your email:

Tags

json Impactjs Canvas fun gen_server superfly PS3 Webgame HTML5 jquery SSH tenerer MooseFS gearman-ruby Gearman MongoDB MochiChat TCP U-ka saegusa IN db command Mai Kuraki Norah Jones log iPhoneException ACG Mac Safari objective-c CouchDB LVS AJAX debian 推荐 AMQP google mail bug gettext Erlang 北京 iptables 架构 tips mysql backup function 我看 postfix 监控 SEO cache Etag memcache thread 进程 线程 无锡 yield file column mixboy xml rss gems ruby shitou shell lighttpd 安全 csrf 公司 nginx linux 模块 apache webserver 朋友 大学 生活 尼古拉斯凯奇 movie 文件同步 笑笑 歌词 auto complete plugin rails music ubuntu blog

Category

  • HTML5[3]
  • iPhone[17]
  • Erlang[11]
  • google[13]
  • 生活[45]
  • 音乐[13]
  • 电影[11]
  • linux[29]
  • web server[6]
  • mail server[3]
  • cluster[1]
  • system manage[9]
  • ruby[20]
  • ruby on rails[28]
  • 开源[4]

Episode

  • MongoDB
  • MochiChat
  • iPhoneException
  • shell
  • thread
  • memcache


Popular Posts

  • 准备开始学习Erlang了(恶狼, 二郎..)
  • Ruby遍历MemCached的key
  • 服务器监控小脚本
  • MySQL Innodb备份
  • [转载]5个有用的ruby gems

Recommended Posts

  • Tri-survive - HTML5 Game
  • Cut the rope - HTML5版
  • json_formatter
  • 在gen_server中spawn新的进程
  • Superfly - Wildflowers
  • 继续凸墙 for Mac OS
  • MongoDB Beijing 2011
  • MongoDB删除map_reduce生成的tmp collection
  • Mai Kuraki - Future Kiss
  • Erlang OOP
  • 用SSH tunnel凸墙
  • Google的语法高亮工具包
  • 大量数据的批量操作
  • 再次被和谐-_-
  • 十人族: 上线了

Friends' blogs

  • levy
  • sphance
  • andreas
  • yangkunlun
  • {:dev=>:wxianfeng}
  • bheye
  • joeydarko

Login

   注册

留言 查看留言

留言

   取消

留言 查看留言


Statistics

  • 访问次数: 317300
  • 今天访问: 108
  • 日志: 213
  • 评论: 4967
  • 音乐: 9
  • 用户: 1766


少女,不点下广告吗!

 

all by shitou

blog comments powered by Disqus

close