pub fn spawn<F, R>(f: F) -> Result<DThdHandle<R>, XwEr>where
    F: FnOnce(Arc<DThdElement>) -> R + Send + 'static,
    R: Send + 'static,Expand description
新建一个动态线程
- 创建线程成功,返回一个包含 DThdHandle的Result;
- 创建线程失败,返回一个包含 XwEr的Result,XwEr指示错误的原因。
此方法使用默认的线程工厂创建线程。
当 DThdHandle 被 drop() 时,新建的线程会变成 detached(分离的) 。此时,新建的线程不能再被 join() 。
方法的签名:
- 'static约束是因为新建的线程可能比调用者的生命周期更长,因此线程的闭包和返回值的生命周期限定为静态生命周期;
- Send约束是因为闭包和返回值需要在线程之间进行转移。并且被移动到- Send约束的闭包的变量也必须是- Send的,否则编译器会报错。 RUSTC是通过- Send约束来区分闭包是不是另一线程的代码的。
§参数说明
- f: 线程的闭包
§示例
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() 失败时的错误码。
    },
};