首页 > 技术文章 > C++ 11 多线程笔记

mosquitoam 2019-04-04 23:27 原文

这是一个课程的学习笔记

一、并发、进程、线程的基本概念

并发:两个或多个任务同时发生
进程:执行中的可执行程序;
线程:有时被称为轻量进程,是程序执行流的最小单元。
并发、进程、线程

二、c++11标准线程库创建子线程的方法

首先包含头文件#inlcude <thread>;,命名空间using namespace std;

  1. 通过创建std::thread类对象创建新线程
...

std::thread thread_1(thread_1_func);
//创建了一个std::thread类对象thread_1,参数thread_1_func为一个可调用对象
//作用:新建一个子线程,且子线程从此处开始执行
....
thread_1.join();//等待子线程执行结束
//thread_1.detach();//把子线程从主线程主分离出去
...

代码说明:可调用对象可以简单理解为函数,子线程执行的代码即为该函数内的代码。

  1. 同时创建和等待多种线程
std::vector<std::thread> myhtreads;
for ( int i = 0 ; i < 10 ; i++ )
{
	mythreads.push_back(thread(func,i));
}
for(auto iter=mythreads.begin();iter!=mythreads.end();++iter)
{
	iter->join();
}

三、数据共享问题、互斥量概念用法、死锁;

unique_lock()

设计模式、单例设计模式、call_once()

condition_variable、wait、notify_one、notify_all

课时10async、future、packaged_task、promise107:46
课时11future其他成员函数、shared_future、atomic97:48
课时12std::atomic续谈、std::async深入谈64:10
课时13windows临界区、其他各种mutex互斥量71:40

条件变量
原子操作
各种成员函数

单核cpu实现多线程的方式:由多操作系统调度,进行多次任务切换;

https://study.163.com/course/courseMain.htm?courseId=1006067356
https://baike.baidu.com/item/线程/103101?fr=aladdin
https://www.cnblogs.com/youyoui/p/8933006.html

推荐阅读