【面试笔记】c++高频多线程面试题代码

本文内容:

记录面试常见的c++中多线程问题及其代码

1.单例模式

懒汉模式

在使用该类时才初始化

class singleton {
 private:
  static singleton* p;
  singleton() {}

 public:
  static singleton* instance();
};

singleton* singleton::instance() {
  if (p == nullptr) {
    p = new singleton();
  }
  return p;
}

饿汉模式

class singleton2 {
 private:
  static singleton2* p;
  singleton2() {}

 public:
  static singleton2* instance();
};

singleton2* singleton2::p = new singleton2();

singleton2* singleton2::instance() { return p; }

c++ 11的较好的实现

class singleton_th {
 private:
  singleton_th() {}
  ~singleton_th() {}
  singleton_th(const singleton_th&);
  singleton_th& operator=(const singleton_th&);

 public:
  static singleton_th& instance();
};

singleton_th& singleton_th::instance() {
  static singleton_th inst;
  return inst;
}

2.生产者消费者实现

条件变量实现

#include <condition_variable>
#include <iostream>
#include <mutex>
#include <thread>
#include <vector>

using namespace std;

class Producer_Consumer
{
    private:
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值