12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
编程知识 时间:2024-12-04 17:03:09
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
在C++中实现信号量可以使用std::mutex和std::condition_variable来实现。下面是一个简单的示例代码来展示如何使用这两个类来实现信号量:#include <iostream>#include <threa
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
在C++中实现信号量可以使用std::mutex
和std::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
类,其中包含wait
和signal
方法用于等待和通知信号量。在process
函数中,我们创建了两个线程来模拟多个进程同时执行,每个线程在执行前会等待信号量,然后执行完毕后通知信号量。通过使用std::mutex
和std::condition_variable
来实现信号量,我们可以实现多个进程之间的同步。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19