pub struct SThd<const N: XwSz, R>where
[XwStk; N]: Sized,
R: Send,{ /* private fields */ }
Expand description
静态线程对象结构体
此结构体用于创建具有 'static
生命周期的线程对象。
Implementations§
source§impl<const N: XwSz, R> SThd<N, R>where
[XwStk; N]: Sized,
R: Send,
impl<const N: XwSz, R> SThd<N, R>where
[XwStk; N]: Sized,
R: Send,
sourcepub fn run<'a>(&'static self, f: fn(_: &Self) -> R) -> SThdHandle<'a, N, R>
pub fn run<'a>(&'static self, f: fn(_: &Self) -> R) -> SThdHandle<'a, N, R>
以线程函数 f
启动静态线程
此方法限定了参数的 [&'static self
] ,因此若试图在函数局部定义静态线程,
调用此方法时,编译器会提示错误:生命周期不够长。
此约束的目的是让用户只能在函数外部定义静态线程对象。
§线程函数
线程函数的原型为 fn(&Self) -> R
,线程运行时,系统会以静态线程自身的引用作为参数调用线程函数 f
。
用户可通过此引用调用线程的方法或访问线程的名字,栈大小等信息。
§返回值
此方法会返回静态线程的句柄 [SThdHandle<'a, N, R>
] ,通过此句柄,其他线程可通知此线程退出并获取返回值。
§上下文
- 线程、中断、中断底半部、空闲任务
§示例
use xwrust::xwos::thd::*;
static STHD: SThd<1024, &str> = SThd::new("SThd", true);
pub fn xwrust_example_sthd() {
STHD.run(|sthd| { // 子线程
// 线程功能
"OK" // 返回值
});
}