parent
4e51763e64
commit
cbdc52e986
@ -508,9 +508,25 @@ pub fn sleep(dur: Duration) {
|
||||
imp::Thread::sleep(dur)
|
||||
}
|
||||
|
||||
/// Blocks unless or until the current thread's token is made available (may wake spuriously).
|
||||
/// Blocks unless or until the current thread's token is made available.
|
||||
///
|
||||
/// See the module doc for more detail.
|
||||
/// Every thread is equipped with some basic low-level blocking support, via
|
||||
/// the `park()` function and the [`unpark()`][unpark] method. These can be
|
||||
/// used as a more CPU-efficient implementation of a spinlock.
|
||||
///
|
||||
/// [unpark]: struct.Thread.html#method.unpark
|
||||
///
|
||||
/// The API is typically used by acquiring a handle to the current thread,
|
||||
/// placing that handle in a shared data structure so that other threads can
|
||||
/// find it, and then parking (in a loop with a check for the token actually
|
||||
/// being acquired).
|
||||
///
|
||||
/// A call to `park` does not guarantee that the thread will remain parked
|
||||
/// forever, and callers should be prepared for this possibility.
|
||||
///
|
||||
/// See the [module documentation][thread] for more detail.
|
||||
///
|
||||
/// [thread]: index.html
|
||||
//
|
||||
// The implementation currently uses the trivial strategy of a Mutex+Condvar
|
||||
// with wakeup flag, which does not actually allow spurious wakeups. In the
|
||||
|
Loading…
x
Reference in New Issue
Block a user