C++并发与多线程学习
C++并发与多线程学习
柚见
这个作者很懒,什么都没留下…
展开
-
C++并发与多线程学习(1):线程的创建
进程与线程每一个进程都有一个主线程,且是唯一的。当进程产生后,主线程就随进程开始启动了。主线程来执行main函数。线程用来执行代码,线程就是代码的一条执行通路。除了主线程外,用户可以创建其他线程。C++11新标准线程库1. 使用函数创建线程#include <thread>void myFunc(void) { cout << "This is create Thread!" << endl; return;}int main(int argc,原创 2021-09-07 10:43:32 · 354 阅读 · 0 评论 -
C++并发与多线程学习(3):互斥量
数据的共享只读数据是安全稳定的,不需要进行保护。直接读就行。读写数据,互斥访问。读写锁。读写不能同时进行、只能一个写、可以多个一起读。多线程被分配在多个cpu上运行,提高效率。但多个线程访问内存中的同一数据资源时,如果不加以保护就会发生读写的错误。访问公共数据的代码成为临界区。具体参见<操作系统>。为了保证数据的一致性,使用互斥量进行加锁。使用头文件#include<mutex>。mutex互斥量是一个类对象,多个线程尝试使用成员函数lock()进行加锁,保护临界区原创 2021-09-07 17:12:45 · 97 阅读 · 0 评论 -
C++并发与多线程学习(2):线程传参
C++多线程传参的三种方式传入普通参数传入引用传入指针(不使用,因为如果主线程的资源被释放,那么子线程将会发生错误)1. 传入普通的参数普通参数传入线程是进行一份拷贝。对于类对象会调用拷贝构造函数。void threadFunction(int x, string str) { cout << &x <<endl; cout << "x is " << x << " and str is " << st.原创 2021-09-07 15:56:56 · 254 阅读 · 0 评论 -
C++并发与多线程学习(4):死锁
构成死锁的四个条件互斥访问资源。一个资源每次只能被一个进程使用。请求与保持。一个进程因请求资源而阻塞时,对已获得的资源保持不放。不可剥夺条件。:进程已获得的资源,在末使用完之前,不能强行剥夺。循环等待。考虑如下问题:有两个资源R1,R2。两个进程A,B。A使用资源的顺序为R1=>R2. B使用的顺序为R2=>R1。满足前三个条件。某一时刻A拥有资源R1等待B释放资源R2,B拥有资源R2等待A释放R1,此时A,B发生死锁。A,B都因在等待对方释放资源而不能往下进行。解决方法:.原创 2021-09-08 11:06:08 · 88 阅读 · 0 评论