我什么时候应该使用std :: thread :: Builder而不是std :: thread :: spawn?

时间:2016-04-18 20:35:33

标签: rust

在阅读了这些std::thread::Builderstd::thread::spawn后,我了解他们之间的差异(或多或少),但建议始终使用std::thread::Builder

我不明白为什么有两个;有人可以向我解释什么时候最好使用其中一个?在某些情况下,或许不能或不应该使用其中一种?

libav
9.18

1 个答案:

答案 0 :(得分:6)

documentation for thread::Builder通过列出与thread::spawn不直接对应的所有功能和类型来回答您的所有问题:

fn name(self, name: String) -> Builder
     

命名要成为的线程。目前,该名称用于识别   只在恐慌信息中。

fn stack_size(self, size: usize) -> Builder
     

设置新线程的堆栈大小。

fn spawn<F, T>(self, f: F) -> Result<JoinHandle<T>>
    where F: FnOnce() -> T,
          F: Send + 'static,
          T: Send + 'static
     

...

     

与spawn free函数不同,此方法产生io::Result   捕获在操作系统级别创建线程的任何失败。

所以thread::Builder允许您:

  1. 设置主题名称。
  2. 设置堆栈大小。
  3. 处理错误以启动主题。
  4. 如果您不关心其中任何一个,请使用thread::spawn