Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++?

Apakah peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++?

王林
王林asal
2024-06-04 09:31:01334semak imbas

Pembolehubah keadaan digunakan untuk penyegerakan utas, membenarkan utas menunggu untuk syarat tertentu dipenuhi. Keadaan menunggu: Benang memanggil tunggu() untuk menunggu syarat dipenuhi Selepas syarat dipenuhi, benang dibangkitkan.

C++ 多线程编程中 condition variables 的作用是什么?

Peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++

Pengenalan

Pembolehubah keadaan ialah primitif penyegerakan yang digunakan untuk penyegerakan utas, membenarkan urutan keadaan tertentu dipenuhi. Dalam C++, pembolehubah keadaan dilaksanakan melalui kelas std::condition_variable. std::condition_variable 类实现的。

作用

condition variables 的作用是:

  • 通知线程:一个线程可以通过调用 notify_one()notify_all() 函数通知其他线程某个条件已被满足。
  • 等待条件:线程可以通过调用 wait()
Peranan

pembolehubah keadaan ialah:

  • Notify thread:

    A thread boleh memanggil notify_one() atau notify_all() Fungsi memberitahu urutan lain bahawa syarat tertentu telah dipenuhi.

  • Syarat menunggu:

    Benang boleh menunggu syarat tertentu untuk dipenuhi dengan memanggil fungsi wait(). Apabila syarat dipenuhi, benang akan dikejutkan.

    Kes Praktikal

    🎜🎜Pertimbangkan masalah pengeluar-pengguna berikut menggunakan pembolehubah keadaan: 🎜
    #include <iostream>
    #include <condition_variable>
    #include <mutex>
    
    std::mutex m; // 互斥锁
    std::condition_variable cv; // 条件变量
    bool ready = false; // 是否准备好
    
    void producer() {
        std::unique_lock<std::mutex> lock(m);
        // 生产数据...
        ready = true;
        cv.notify_one(); // 通知消费者数据已准备好
    }
    
    void consumer() {
        std::unique_lock<std::mutex> lock(m);
        while (!ready) { cv.wait(lock); } // 等待数据准备好
        // 消费数据...
    }
    
    int main() {
        std::thread t1(producer);
        std::thread t2(consumer);
        t1.join();
        t2.join();
        return 0;
    }
    🎜Dalam contoh ini, urutan pengeluar menggunakan pembolehubah keadaan untuk memberitahu urutan pengguna bahawa data sudah sedia. Benang pengguna menunggu pada pembolehubah keadaan sehingga data sedia. 🎜🎜🎜Kesimpulan🎜🎜🎜Pembolehubah keadaan ialah alat yang berkuasa dalam C++ untuk menyegerakkan atur cara berbilang benang. Mereka membenarkan benang menunggu syarat tertentu sehingga syarat itu dipenuhi. 🎜

Atas ialah kandungan terperinci Apakah peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn