Структура BarrierWaitResult

#![allow(unused)]
fn main() {
pub struct BarrierWaitResult(/* приватные поля */);
}

Возвращается Barrier::wait, когда все потоки в барьере встретились.

Пример

#![allow(unused)]
fn main() {
use std::sync::{Barrier, Arc};
use std::thread;

let mut handles = Vec::with_capacity(10);
let barrier = Arc::new(Barrier::new(10));
for _ in 0..10 {
    let c = Arc::clone(&barrier);
    // Те же сообщения будут打印出来 вместе.
    // Мы увидим это из порядков вывода.
    handles.push(thread::spawn(move|| {
        println!("before wait");
        let wait_result = c.wait();
        println!("after wait");
        wait_result
    }));
}
// Ждем завершения других потоков.
let mut num_leaders = 0;
for handle in handles {
    let wait_result = handle.join().unwrap();
    if wait_result.is_leader() {
        num_leaders += 1;
    }
}

// Только один поток становится лидером.
assert_eq!(num_leaders, 1);
}

Методы

pub fn is_leader(&self) -> bool

Возвращает true, если этот поток является "лидером" вызова wait.

Только один поток из группы, ожидающей на барьере, будет выбран в качестве "лидера". Этот поток получит BarrierWaitResult, который возвращает true от is_leader, когда вызов wait возвращается.

Пример

#![allow(unused)]
fn main() {
use std::sync::Barrier;

let barrier = Barrier::new(1);
let barrier_wait_result = barrier.wait();
assert!(barrier_wait_result.is_leader());
}

pub fn is_leader(&self) -> bool

Возвращает true, если этот поток является "лидером" вызова wait.

Только один поток из группы, ожидающей на барьере, будет выбран в качестве "лидера". Этот поток получит BarrierWaitResult, который возвращает true от is_leader, когда вызов wait возвращается.

Пример

#![allow(unused)]
fn main() {
use std::sync::Barrier;

let barrier = Barrier::new(1);
let barrier_wait_result = barrier.wait();
assert!(barrier_wait_result.is_leader());
}

Реализации Trait

impl Debug for BarrierWaitResult

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью заданного форматировщика.

impl PartialEq<BarrierWaitResult> for BarrierWaitResult

fn eq(&self, other: &BarrierWaitResult) -> bool

Этот метод проверяет равенство значений self и other, и используется оператором ==.

fn ne(&self, other: &BarrierWaitResult) -> bool

Этот метод проверяет неравенство !=. Реализация по умолчанию почти всегда достаточна, и её не следует переопределять без веской причины.

impl Eq for BarrierWaitResult

Auto Trait Implementation

impl RefUnwindSafe for BarrierWaitResult

impl Send for BarrierWaitResult

impl Sync for BarrierWaitResult

impl Unpin for BarrierWaitResult

impl UnwindSafe for BarrierWaitResult

Автоматические реализации Trait

impl<T> Any for T where T: 'static + ?Sized,

impl<T> Borrow<T> for T where T: ?Sized,

impl<T> BorrowMut<T> for T where T: ?Sized,

impl<T> From<T> for T

impl<T, U> Into<U> for T where U: From<T>,

impl<T> ToOwned for T where T: Clone,

impl<T, U> TryFrom<U> for T where U: Into<T>,

impl<T, U> TryInto<U> for T where U: TryFrom<T>,