C++中如何实现信号量以同步多个进程

   2024-10-25 5050
核心提示:在C++中实现信号量可以使用std::mutex和std::condition_variable来实现。下面是一个简单的示例代码来展示如何使用这两个类来实现

在C++中实现信号量可以使用std::mutexstd::condition_variable来实现。下面是一个简单的示例代码来展示如何使用这两个类来实现信号量:

#include <iostream>#include <thread>#include <mutex>#include <condition_variable>class Semaphore {public:    Semaphore(int count) : count(count) {}    void wait() {        std::unique_lock<std::mutex> lock(mutex);        while (count <= 0) {            cv.wait(lock);        }        count--;    }    void signal() {        std::unique_lock<std::mutex> lock(mutex);        count++;        cv.notify_one();    }private:    int count;    std::mutex mutex;    std::condition_variable cv;};Semaphore semaphore(1);void process() {    for (int i = 0; i < 5; i++) {        semaphore.wait();        std::cout << "Thread ID: " << std::this_thread::get_id() << " is executing" << std::endl;        semaphore.signal();    }}int main() {    std::thread t1(process);    std::thread t2(process);        t1.join();    t2.join();        return 0;}

在这个示例代码中,我们定义了一个Semaphore类,其中包含waitsignal方法用于等待和通知信号量。在process函数中,我们创建了两个线程来模拟多个进程同时执行,每个线程在执行前会等待信号量,然后执行完毕后通知信号量。通过使用std::mutexstd::condition_variable来实现信号量,我们可以实现多个进程之间的同步。

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号