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