Ruby线程

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

猜你喜欢

转载自iandaicsu.iteye.com/blog/1838175