Commit graph

570 commits

Author SHA1 Message Date
Benoît C
c1221e2072
Replace data.clone() by Arc::clone(&data) in mutex doc.
Arc::clone(&from) is considered as more idiomatic because it conveys more explicitly the meaning of the code.
2018-11-16 15:34:12 -05:00
Stjepan Glavina
d75dae3069 Deprecate channel selection 2018-11-08 22:51:46 +01:00
kennytm
9d9146ad95
Rollup merge of #55734 - teresy:shorthand-fields, r=davidtwco
refactor: use shorthand fields

refactor: use shorthand for single fields everywhere (excluding tests).
2018-11-07 21:27:00 +08:00
teresy
eca11b99a7 refactor: use shorthand fields 2018-11-06 15:05:44 -05:00
Matthias Krüger
4972beaf65 fix typos in various places 2018-10-23 15:56:25 +02:00
Simon Sapin
9a9894a8f1
Fix tracking issue for Once::is_completed 2018-10-07 12:00:41 +02:00
Pietro Albini
6b24de1edd
Rollup merge of #54078 - GabrielMajeri:expand-sync-docs, r=steveklabnik
Expand the documentation for the `std::sync` module

I've tried to expand the documentation for Rust's synchronization primitives. The module level documentation explains why synchronization is required when working with a multiprocessor system,
and then links to the appropiate structure in this module.

Fixes #29377, since this should be the last item on the checklist (documentation for `Atomic*` was fixed in #44854, but not ticked off the checklist).
2018-10-05 22:33:10 +02:00
Gabriel Majeri
6ba5584712 Address review comments 2018-10-05 08:50:17 +03:00
Aleksey Kladov
f8e9d2f0ec Fix Once perf regression
Because `call_once` is generic, but `is_completed` is not, we need
`#[inline]` annotation to allow LLVM to inline `is_completed` into
`call_once` in downstream crates.
2018-09-29 11:07:48 +03:00
Gabriel Majeri
7e921aa590 Rewrite section on concurrency 2018-09-28 12:03:40 +03:00
Gabriel Majeri
bcec6bb525 Fix broken links 2018-09-28 12:03:33 +03:00
Gabriel Majeri
f3fdbbfae8 Address review comments
Reword the lead paragraph and turn the list items into
complete sentences.
2018-09-27 20:25:04 +03:00
Gabriel Majeri
e0df0ae734 Make example code use global variables
Because `fn main()` was added automatically, the variables
were actually local statics.
2018-09-27 20:13:33 +03:00
Gabriel Majeri
f5e991bee0 Expand the documentation for the std::sync module
Provides an overview on why synchronization is required,
as well a short summary of what sync primitives are available.
2018-09-27 20:13:32 +03:00
Guillaume Gomez
c1ad1b0338 Fix invalid urls 2018-09-06 23:32:30 +02:00
bors
0be2c30369 Auto merge of #53075 - Mark-Simulacrum:update-cargolock, r=alexcrichton
Update Cargo.lock

This also includes major version bumps for the rand crate used by core, std, and alloc tests, among other crates (regex, etc.) used elsewhere. Since these are all internal there should be no user-visible changes.

r? @alexcrichton
2018-09-05 03:04:20 +00:00
bors
f68b7cc598 Auto merge of #53027 - matklad:once_is_completed, r=alexcrichton
Allow to check if sync::Once is already initialized

Hi!

I propose to expose a way to check if a `Once` instance is initialized.

I need it in `once_cell`. `OnceCell` is effetively a pair of `(Once, UnsafeCell<Option<T>>)`, which can set the `T` only once. Because I can't check if `Once` is initialized, I am forced to add an indirection and check the value of ptr instead:

8127a81976/src/lib.rs (L423-L429)

8127a81976/src/lib.rs (L457-L461)

The `parking_lot`'s version of `Once` exposes the state as an enum: https://docs.rs/parking_lot/0.6.3/parking_lot/struct.Once.html#method.state.

I suggest, for now, just to add a simple `bool` function: this fits my use-case perfectly, exposes less implementation details, and is forward-compatible with more fine-grained state checking.
2018-09-05 00:37:03 +00:00
Mark Rousskov
9ec5ef541a Breaking change upgrades 2018-09-04 13:22:08 -06:00
Matthias Krüger
71120ef1e5 Fix typos found by codespell. 2018-08-19 17:41:28 +02:00
bors
5bb2094d89 Auto merge of #52936 - felixrabe:patch-1, r=alexcrichton
Document #39364 – Panic in mpsc::Receiver::recv_timeout

I can still reproduce #39364 with the example code at https://github.com/rust-lang/rust/issues/39364#issuecomment-320637702.

I'm opening this PR in an attempt to document this bug as a known issue in [libstd/sync/mpsc/mod.rs](https://github.com/rust-lang/rust/blob/master/src/libstd/sync/mpsc/mod.rs).

Inputs very much welcome. ([Nightly docs for `recv_timeout`.](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Receiver.html?search=#method.recv_timeout))
2018-08-14 22:22:18 +00:00
Aleksey Kladov
e1bd0e7b4e Reduce code duplication in Once 2018-08-09 20:50:43 +03:00
Felix Rabe
025f41f4c0
"Panics" -> "Known Issues"; rm trailing WS 2018-08-07 17:34:34 +02:00
Felix Rabe
6e2051cd08
Less words better than moar words 2018-08-07 16:39:09 +02:00
Felix Rabe
c574720d88
Rephrase 2018-08-07 16:38:02 +02:00
Felix Rabe
b1f47aa838
Document panic in mpsc::Receiver::recv_timeout 2018-08-07 16:35:03 +02:00
Ralf Jung
a92b5cc916 Remove references to StaticMutex which got removed a while ago 2018-08-06 12:34:00 +02:00
Aleksey Kladov
a2f9aaf7a3
Fix trailnig WS 2018-08-03 16:50:30 +03:00
Aleksey Kladov
6aba6f9184 Allow to check if sync::Once is initialized 2018-08-03 15:49:23 +03:00
Aleksey Kladov
94de821002
Specify reentrancy gurantees of Once::call_once 2018-08-03 14:18:06 +03:00
Felix Rabe
c3fdd19e43
Document #39364 (WIP) 2018-08-01 09:42:46 +02:00
Tatsuyuki Ishi
4f1d4e4db6 Merge remote-tracking branches 'ljedrz/dyn_libcore', 'ljedrz/dyn_libstd' and 'ljedrz/dyn_libterm' into dyn-rollup 2018-07-25 10:25:02 +09:00
Ralf Jung
3e1254d956 sync::Once: Use Acquire on the hot path, and explain why we don't use it elsewhere 2018-07-17 20:51:31 +02:00
Matt Kraai
e488cba678
Uncapitalize "If" 2018-07-11 17:19:41 -07:00
Christopher Durham
0f3f292b4c
remove sync::Once::call_once 'static
- [std: Rewrite the `sync` module71d4e77db8) (Nov 2014)

    ```diff
    -    pub fn doit(&self, f: ||) {
    +    pub fn doit(&'static self, f: ||) {
    ```

    > ```text
    >  The second layer is the layer provided by `std::sync` which is intended to be
    >  the thinnest possible layer on top of `sys_common` which is entirely safe to
    >  use. There are a few concerns which need to be addressed when making these
    >  system primitives safe:
    >
    >    * Once used, the OS primitives can never be **moved**. This means that they
    >      essentially need to have a stable address. The static primitives use
    >      `&'static self` to enforce this, and the non-static primitives all use a
    >      `Box` to provide this guarantee.
    > ```

The author of this diff is @alexcrichton. `sync::Once` contains only a pointer to (privately hidden) `Waiter`s, which are all stack-allocated. The `'static` bound to `sync::Once` is thus unnecessary to guarantee that any OS primitives are non-relocatable.

See https://internals.rust-lang.org/t/sync-once-per-instance/7918 for more context.
2018-07-10 22:47:59 -04:00
ljedrz
560d8079ec Deny bare trait objects in src/libstd. 2018-07-10 20:35:36 +02:00
Simon Sapin
c7638edf52 Rename alloc::arc to alloc::sync, to match std::sync 2018-06-29 14:01:33 +02:00
NODA, Kai
b81da27862 libstd: add an RAII utility for sys_common::mutex::Mutex
Signed-off-by: NODA, Kai <nodakai@gmail.com>
2018-06-17 15:18:32 +08:00
Tobias Bucher
2a900e2b84 Update the Once docs to use Once::new 2018-05-24 14:09:42 +02:00
Tobias Bucher
1c2abda671 Add Once::new as a way of constructing a Once 2018-05-24 14:08:47 +02:00
Manish Goregaokar
f8b774fbf1 Add explanation for #[must_use] on mutex guards 2018-05-07 10:26:28 -07:00
Zack M. Davis
3dbdccc6a9 stabilize #[must_use] for functions and must-use operators
This is in the matter of RFC 1940 and tracking issue #43302.
2018-04-28 20:32:49 -07:00
Simon Sapin
1b895d8b88 Import the alloc crate as alloc_crate in std
… to make the name `alloc` available.
2018-04-12 22:52:47 +02:00
kennytm
e253224541
Rollup merge of #47970 - vlovich:condvar_wait_until, r=dtolnay
Add Condvar APIs not susceptible to spurious wake

Provide wait_until and wait_timeout_until helper wrappers that aren't susceptible to spurious wake.
Additionally wait_timeout_until makes it possible to more easily write code that waits for a fixed amount of time in face of spurious wakes since otherwise each user would have to do math on adjusting the duration.

Implements #47960.
2018-02-25 15:54:39 +08:00
Vitali Lovich
14b403c91a Fix doc compile error 2018-02-20 13:07:21 -08:00
Guillaume Gomez
af140ecdbc
Rollup merge of #48275 - matthiaskrgr:codespell, r=kennytm,varkor
fix more typos found by codespell.
2018-02-18 13:21:01 +01:00
Vitali Lovich
d549db8031 Fix tidy violation 2018-02-17 09:17:58 -08:00
Matthias Krüger
4452446292 fix more typos found by codespell. 2018-02-17 17:38:49 +01:00
Vitali Lovich
b1f04a3a2e Fix unit test compilation
Also fix some code snippets in documentation.
2018-02-16 20:00:18 -08:00
Guillaume Gomez
ba6a6d0f0a Fix condvar example 2018-02-15 19:00:51 +01:00
Vitali Lovich
6fe2d1d765 Misc fixes
Switch feature guards to unstable
Add missing semicolon
Remove mut that's no longer necessary
2018-02-13 11:32:04 -08:00