pub struct DThdHandle<R> { /* private fields */ }Expand description
动态线程的句柄
Implementations§
source§impl<R> DThdHandle<R>
 
impl<R> DThdHandle<R>
sourcepub fn element(&self) -> &DThdElement
 
pub fn element(&self) -> &DThdElement
返回线程的元素
sourcepub fn quit(&self) -> XwEr
 
pub fn quit(&self) -> XwEr
通知动态线程退出
此方法用于向线程设置 退出状态 。
调用此方法的线程不会等待被设置 退出状态 的线程退出。
此方法可被重复调用,线程的 退出状态 一旦被设置,不可被清除。
§上下文
- 线程、中断、中断底半部、空闲任务
sourcepub fn join(self) -> Result<R, Self>
 
pub fn join(self) -> Result<R, Self>
等待动态线程运行至退出,并返回线程的返回值
- 如果动态子线程还在运行,此方法会阻塞父线程直到动态子线程退出。父线程的阻塞状态可被中断;
- 如果动态子线程已经提前运行至退出,此方法可立即返回动态子线程的返回值。
此方法会消费 self :
- 如果此方法执行成功,会消费掉 self,并将动态子线程的返回值放在Ok()中返回,因为线程已经结束,其DThdHandle的生命周期也应该结束;
- 如果此方法执行失败,会重新在 Err()中返回self,并可通过DThdHandle::state()方法获取失败的原因。
§上下文
- 线程
§示例
use xwrust::xwos::thd;
match thd::spawn(|_| {
    // 线程代码;
    // 返回值
}) {
    Ok(handler) => {
        match handler.join() {
            Ok(r) => {
                // r 是线程闭包的返回值。
            },
            Err(e) => {
                // `join()` 失败时的错误码可通过 `e.state()` 获取。
                // `e` 是 `DThdHandle<R>` ,重新被返回。
            },
        };
    },
    Err(rc) => {
        // rc 是 spawn() 失败时的错误码。
    },
};sourcepub fn stop(self) -> Result<R, Self>
 
pub fn stop(self) -> Result<R, Self>
终止动态线程并等待线程运行至退出,并返回线程的返回值
- 如果动态子线程还在运行,此方法会阻塞父线程直到动态子线程退出。父线程的阻塞状态可被中断;
- 如果动态子线程已经提前运行至退出,此方法可立即返回动态子线程的返回值。
此方法 = DThdHandle::quit() + DThdHandle::join()
此方法会消费 self :
- 如果此方法执行成功,会消费掉 self,并将动态子线程的返回值放在Ok()中返回,因为线程已经结束,其DThdHandle的生命周期也应该结束;
- 如果此方法执行失败,会重新在 Err()中返回self,并可通过DThdHandle::state()方法获取失败的原因。
§上下文
- 线程
§示例
use xwrust::xwos::thd;
match thd::spawn(|_| {
    // 线程代码;
    // 返回值
}) {
    Ok(handler) => {
        match handler.stop() {
            Ok(r) => {
                // r 是线程闭包的返回值。
            },
            Err(e) => {
                // `stop()` 失败时的错误码可通过 `e.state()` 获取。
                // `e` 是 `DThdHandle<R>` ,重新被返回。
            },
        };
    },
    Err(rc) => {
        // rc 是 spawn() 失败时的错误码。
    },
};sourcepub fn state<'a>(&'a self) -> &'a ThdJoinState
 
pub fn state<'a>(&'a self) -> &'a ThdJoinState
返回动态线程的 join()/stop() 状态