117.info
人生若只如初见

c++互斥锁怎么实现

在C++中,互斥锁可以通过使用标准库中的`std::mutex`来实现。

下面是一个简单的示例:

```cpp

#include

#include

#include

std::mutex mtx;

void printHello(int id) {

std::lock_guard lock(mtx); // 加锁
std::cout << "Hello from thread " << id << std::endl;

} // 自动解锁
int main() {

std::thread t1(printHello, 1);

std::thread t2(printHello, 2);

t1.join();
t2.join();
return 0;

}``

在上面的示例中,`std::mutex`被用来创建了一个互斥锁对象`mtx`。`std::lock_guard`是一个RAII(资源获取即初始化)类,它会在构造时加锁互斥锁,在析构时解锁互斥锁,确保互斥锁的正确使用。

在`printHello`函数中,通过创建`std::lock_guard`对象`lock`,实现对互斥锁的加锁。这样,当两个线程`t1`和`t2`分别调用`printHello`函数时,只有一个线程能够获得互斥锁,另一个线程会等待直到互斥锁被释放。这样就确保了每次只有一个线程能够输出"Hello from thread X"的信息。

最后,使用`t1.join()`和`t2.join()`等待两个线程执行完毕,然后程序退出。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe1bfAzsLCQ9VAFQ.html

推荐文章

  • inputtype怎么使用

    inputType是一个属性,用于指定输入字段的类型。它可以用于HTML的input元素、textarea元素和select元素。
    在HTML中,可以通过以下方式使用inputType属性: ...

  • escapeHTML函数怎么使用

    escapeHTML?????????HTML???????,???HTML??????(?,&?)??????HTML??(?,&?)?
    ??escapeHTML???????: ??escapeHTML????????????????????????????????? ??escape...

  • bgp独享云主机租用有哪些优势

    BGP独享云主机租用有以下几个优势: 独占资源:BGP独享云主机租用是指用户租用了一台独立的云主机,拥有独立的计算资源,不会受到其他用户的影响。这意味着用户可...

  • 云服务器双机热备份怎么设置

    要设置云服务器的双机热备份,需要按照以下步骤进行操作: 首先,选择一台云服务器作为主服务器,另一台作为备份服务器。 在主服务器上安装热备份软件,例如双机...