]> git.lizzy.rs Git - rust.git/commit
Revise std::thread semantics
authorAaron Turon <aturon@mozilla.com>
Tue, 17 Feb 2015 09:08:53 +0000 (01:08 -0800)
committerAaron Turon <aturon@mozilla.com>
Tue, 17 Feb 2015 22:33:29 +0000 (14:33 -0800)
commitd8f8f7a58c7c8b3352c1c577347865f5a823fee3
treeefd8e56d2dd11d926862d357feae6f14f8161f14
parente4e7aa28566d062514a7a1f5534d76b9d82f524a
Revise std::thread semantics

This commit makes several changes to `std::thread` in preparation for
final stabilization:

* It removes the ability to handle panics from `scoped` children; see
  #20807 for discussion

* It adds a `JoinHandle` structure, now returned from `spawn`, which
  makes it possible to join on children that do not share data from
  their parent's stack. The child is automatically detached when the
  handle is dropped, and the handle cannot be copied due to Posix
  semantics.

* It moves all static methods from `std::thread::Thread` to free
  functions in `std::thread`. This was done in part because, due to the
  above changes, there are effectively no direct `Thread` constructors,
  and the static methods have tended to feel a bit awkward.

* Adds an `io::Result` around the `Builder` methods `scoped` and
  `spawn`, making it possible to handle OS errors when creating
  threads. The convenience free functions entail an unwrap.

* Stabilizes the entire module. Despite the fact that the API is
  changing somewhat here, this is part of a long period of baking and
  the changes are addressing all known issues prior to alpha2. If
  absolutely necessary, further breaking changes can be made prior to beta.

Closes #20807

[breaking-change]
src/libstd/sys/unix/thread.rs
src/libstd/sys/windows/thread.rs
src/libstd/thread.rs