c++ 并发进程(简述)

同样是c++课设中需要用到的知识点,简要记录一些理解与运用。


概念理解

并发就是为了满足同时执行多个活动并且相互独立。
在这里插入图片描述
进程是由一个或多个线程构成,而每一个线程独立进行工作。
可以这样说每一个线程几乎都共享同样的代码和资源数据。


并发程序基础要点

#include<thread>:头文件
thread:线程函数的加入一次线程的声明。
mutex:互斥锁,一般用于对于共享资源的操作时,需要使用。
condition_variable:条件变量,一般用于判断线程中的一些判断。
thread::join():阻塞当前线程,等待子线程的执行,直至 *this 所标识的线程完成其执行。
thread::detach():从 thread 对象分离执行的线程,允许执行独立地持续。


简要实现

#include<iostream>
#include<thread>
#include<mutex>
using namespace std;
class Singleton{
    
    
private:
	mutex mymutex;
	Singleton(){
    
     cout << "Singleton constructed!" << endl;}
	Singleton(const Singleton&)=delete;
    Singleton& operator=(const Singleton&)=delete;
    ~Singleton(){
    
     cout<< "Singleton destructed" << endl;}
public:
	static Singleton& GetInstance() {
    
    
		static Singleton object;
		return object;
	}
	static int num_1;
	static int num_2;
	void start();
	void fun(); 
	void fun_1(){
    
     cout << num_2 << endl;}	
}; 
int Singleton::num_2 = 0;
int Singleton::num_1 = 0;
int main()
{
    
    
	Singleton& instance = Singleton::GetInstance();
	instance.start();
    return 0;
}
void Singleton::start()
{
    
    
	while(num_1 < 10){
    
    
		num_1++;
		thread child(fun,this);
		child.detach();
	}
}
void Singleton::fun()
{
    
    
	mymutex.lock();
	cout << "完成主线程调用子线程:" << num_1 << endl;
	mymutex.unlock();
	while(num_2 < 10){
    
    
		num_2++;
		thread child_1(fun_1,this);
		child_1.detach();
	}
}

测试结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/107757906