錆に同様のことを実装します
RUSTでは、STD :: SyncモジュールのMutexとCondvarの組み合わせを使用して条件変数が実装されます。これは、セマフォとミューテックスを使用した実装の例です。

「錆

STD :: sync :: {arc、mutex、condvar}を使用してください。
std :: threadを使用してください。

fn main（）{
    let data = arc :: new（（mutex :: new（false）、condvar :: new（）））;

    let data_clone = data.clone（）;
    let thread_one = thread :: spawn（move || {
        let（lock、cvar）=＆*data_clone;
        mut start = lock.lock（）。unwrap（）;
        while！*start {
            start = cvar.wait（start）.unwrap（）;
        }
        println！（ "スレッド1が始まった！"）;
    }）;

    let data_clone = data.clone（）;
    let thread_two = thread :: spawn（move || {
        let（lock、cvar）=＆*data_clone;
        mut start = lock.lock（）。unwrap（）;
        *start = true;
        cvar.notify_all（）;
        println！（ "スレッド2が始まった！"）;
    }）;

    thread_one.join（）。unwrap（）;
    thread_two.join（）。unwrap（）;
}
`` `

この例では、「Mutex」と「Condvar」で構成される共有データ構造データを作成します。「Mutex」は、共有ブール波へのアクセスを同期するために使用されますが、「condvar」は、ブール波がTrueに設定されているときに待機スレッドを通知するために使用されます。

次に、2つのスレッド、thread_oneとthread_twoを作成します。sward_oneは、ブール奏者が開始されるまでcondvarで待機しますが、thread_twoはブール値を真に設定し、「condvar」のすべての待機スレッドに通知します。

ARCを使用して、スレッド間のデータ構造の所有権を共有し、閉鎖を移動してARCの所有権を各スレッドに転送することに注意してください。