Ruby线程生命周期及其状态
在 Ruby 中,我们可以创建具有不同状态和生命周期的线程,其生命周期表示从开始到结束的时间。在本文中,我们将了解 Ruby 中线程的生命周期。
Ruby中的线程生命周期
线程生命周期简要总结了线程从开始到结束的发展过程。可以使用**Thread.new、Thread.fork**或**Thread.start**创建一个新线程。
创建新线程后,无需立即启动它。只要 CPU 可用,它就会自动启动。
**Thread.new**返回一个 Thread 对象。可以使用 Thread 类的多种方法查询和操作线程。
一旦线程到达与调用**Thread.new**相关的代码块,它就会停止。
通过调用 Thread 对象的 value 方法,将线程块中的最后一个表达式转换为线程值,该值通过调用线程块中的最后一个表达式获得。
完全运行的线程只会从**value**方法接收值。否则,它将不会接收值。
如果引发异常,则线程将终止。即使不是主线程,只有以异常终止的线程才会受到此条件的影响。
Ruby中的线程状态
Ruby 提供五种线程状态,每种状态都描述了线程的当前状态。要确定线程是否存活,可以使用**alive?**函数和**status**方法。
下表描述了 Ruby 中的不同线程状态及其返回值。
| 状态 | 返回值 |
|---|---|
| 可运行 | run |
| 休眠 | Sleep |
| 中止 | aborting |
| 正常终止 | false |
| 异常终止 | nil |
让我们更深入地了解 Ruby 中线程的不同状态。
**可运行** - 正在运行或等待获取 CPU 资源(如果可用)的线程。
**休眠** - 空闲线程,正在等待 IO 或当前已停止的线程。
**中止** - 中间状态。这指的是已被终止但尚未结束的线程。
**异常终止** - 包含异常的线程,或者换句话说,由于发生异常而终止的线程。
**正常终止** - 线程在不包含异常的情况下完成其工作,或正常终止时。
示例
现在让我们来看一个非常基本的例子,我们将创建一个新线程,然后检查其状态。请考虑以下代码。
# status checking of a thread
cnt = 0
# new thread created
x = Thread.new {
loop {
cnt += 1
}
}
# checking
puts x.alive?
# printing status
puts x.status输出
true run
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP