阅读完这些内容std::thread::Builder
并std::thread::spawn
了解它们之间的差异(或多或少),但建议总是使用它std::thread::Builder
吗?
我不明白为什么有两个; 有人可以向我解释什么时候最好使用其中一个?在某些情况下,或许不能或不应该使用其中一种?
let child: std::thread::JoinHandle<()> = std::thread::spawn(move || {
for a in 0..100{
println!("D");
std::thread::sleep(std::time::Duration::from_millis(50));
}
});
child.join();
Run Code Online (Sandbox Code Playgroud)
let child: Result<std::thread::JoinHandle<()>,_> = std::thread::Builder::new().name("child1".to_string()).spawn(move || {
for a in 0..100{
println!("D");
std::thread::sleep(std::time::Duration::from_millis(50));
}
});
child.unwrap().join();
Run Code Online (Sandbox Code Playgroud)
通过列出与以下内容不直接对应的所有功能和类型来thread::Builder
回答所有问题的文档thread::spawn
:
Run Code Online (Sandbox Code Playgroud)fn name(self, name: String) -> Builder
命名要成为的线程.目前,该名称仅用于在恐慌消息中进行识别.
Run Code Online (Sandbox Code Playgroud)fn stack_size(self, size: usize) -> Builder
设置新线程的堆栈大小.
Run Code Online (Sandbox Code Playgroud)fn spawn<F, T>(self, f: F) -> Result<JoinHandle<T>> where F: FnOnce() -> T, F: Send + 'static, T: Send + 'static
...
与spawn free函数不同,此方法可以
io::Result
捕获在OS级别创建线程的任何失败.
所以a thread::Builder
允许你:
使用thread::spawn
时,你不关心任何这些.
归档时间: |
|
查看次数: |
428 次 |
最近记录: |