美文网首页
C++ 线程锁

C++ 线程锁

作者: Vwwwwww | 来源:发表于2020-05-27 21:35 被阅读0次

多线程共享数据线程锁

#include <mutex>;
using namespace std;

// 1.普通的线程锁
mutex lock_mutex;

lock_mutex.lock();
   //  锁住值
lock_mutex.unlock();

// 2. lock_guard<mutex>  有效范围内 自动开关锁
mutex mutex_;
void func(){
  lock_guard<mutex> lock(mutex_);
     // 锁住值
}

// 3. uniqu_lock<mutex> 在lock_guard 的功能基础上更加的灵活
mutex mutex1_;
void func(){
  uniqu_lock<mutex> lock(mutex1_);
     // 锁住值
}

mutex mutex2_;
void func(){
  uniqu_lock<mutex> lock(mutex2_);
     // 锁住值
  lock.unlock();
   // 其他处理
}

mutex mutex3_;
void func(){
 //  尝试锁,没有锁上的话执行其他处理
  uniqu_lock<mutex> lock(mutex3_,std::try_to_lock); 
 if(lock.owns_lock){
     // 锁住值
}else{
    printf(" 没有lock住");
}
}

std::condition_variable 等待一个条件的满足

#include <mutex>;
using namespace std;

mutex mutex_;
std::condition_variable condition;
int a ;
void func(){
   lock_guard<mutex> mut(mutex_);
   a = 10;
   this_thread::sleep_for(chrono::milliesecond(5000));
   condition.notify_one();  //  把等待线程唤醒   notify_all() 等待所有线程唤醒
}

void func1(){
 lock_guard<mutex> mut(mutex_);
    //  返回 false 一直等待
    condition.wait(mutex_,[this]{
            if(a > 1){
                  return false;
              }
           return true;
     });
}

相关文章

  • leetcode第1114题:按顺序打印

    题目描述 考点 多线程 代码实现 注意利用了c++标准模板库中:mutex库; 参考资料 c++之多线程中“锁”的...

  • c++ 线程锁

  • C++ 线程锁

    多线程共享数据线程锁 std::condition_variable 等待一个条件的满足

  • Android 多线程

    目录 AsyncTask使用和源码分析: 线程同步-锁: linux c/c++多线程看了肯定懂: 正文 一 多线...

  • C++ 线程锁理解

    1、分类 线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能与性能成反比。不过我们一般不使...

  • Android C++生产者与消费者简易Demo

    1. C++生产者与消费者 在了解生产者与消费者之前,我们先来看看 C++ 关于线程的一些基本知识: 线程锁 pt...

  • 多线程互斥锁

    c++之多线程中“锁”的基本用法unique_lock比lock_guard多的功能函数

  • 4.0.6.守护线程,线程死锁

    守护线程会随着主线程的结束而结束DaemonThread 线程 1, 线程 2,锁1,锁2 线程1 有锁1,想拿锁...

  • ios学习之2-多线程调用

    参考 1参考 2参考 3一般我们多线程操作是用锁来控制的,但是OC和C++会选择用线程队列来控制. dispatc...

  • C++ 多线程

    C++ 多线程 | 菜鸟教程 C++ 11 多线程--线程管理 - Brook_icv - 博客园

网友评论

      本文标题:C++ 线程锁

      本文链接:https://www.haomeiwen.com/subject/fnigahtx.html