
C++11多线程学习笔记
chandepire
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(1)课程介绍
之前一直想看一下多线程编程,但是迟迟没有去动手,直到之前参加一个比赛,碰见相关内容,这次无意间在网易云课堂上发现这个课程,这个系列的博客就当作自己学习的笔记,作为自己的再次巩固.废话不多说,直接上学习记录. 并发编程包括两种方式,分别是多线程编程和多进程编程.多进程中,每一个进程都只有一个线程,进程间通信方式有文件,管道,消息队列等.另一种并发模型就是多线程,即一个进程中两个或两个以上的线程,线...原创 2018-07-08 22:13:04 · 162 阅读 · 0 评论 -
(2)线程管理
一上来就用一段代码来开启这节课... #include <thread> #include <iostream> using namespace std; void function_1() { cout << "Hello world!" << endl; } int main(int argc, char** argv) { ...原创 2018-07-08 22:59:51 · 142 阅读 · 0 评论 -
(3)数据竞争与互斥对象
这节课终于要解决之前的一个bug了,也就是数据竞争的问题,先看一下如下代码: #include <thread> #include <iostream> #include <string> using namespace std; void function_1() { for(int i=0;i>-100;--i) cou...原创 2018-07-09 09:44:22 · 281 阅读 · 0 评论 -
(4)死锁
aha,什么是死锁,死锁又是如何产生的呢?来来,接着往下走… //这是一段产生了死锁的代码 #include <thread> #include <iostream> #include <string> #include <mutex> #include <unistd.h> #include <fstream> us...原创 2018-07-09 10:11:04 · 236 阅读 · 0 评论 -
(6)条件变量
先列出这节课的例程代码. #include <deque> #include <functional> #include <iostream> #include <fstream> #include <thread> #include <string> #include <mutex> using names原创 2018-07-09 15:18:29 · 338 阅读 · 0 评论 -
(7)Feature,Promise和async()
其实,这节课程中一开始的引入future的环节不是太清晰,反正只要知道使用了future, 在代码中可以省略mutex 和条件变量的使用,并且也保证了主线程在得到x的值的过程,一定是在子线程结束后发生.而这个代码段是为了得到从线程中返回值. #include <deque> #include <functional> #include <iostream>...原创 2018-07-09 16:01:41 · 811 阅读 · 0 评论 -
(8)使用可调用对象
这里讲解的是多线程的几种创建方式. class A { public: void f(int x,char c){} int operator()(int N){ return 0;} }; void foo(int x) { } int main() { A a; std::thread t1(a,6);//传递a的拷贝给子线程 std::thr...原创 2018-07-09 16:12:46 · 262 阅读 · 0 评论 -
(5)Unique Lock和Lazy Initialization
前面我们已经介绍了两种定义互斥锁的方式: (1)mu.lock() (2)std::lock_guard&lt;std::mutex&gt; locker(mu) 接着我们介绍第三种方式, (3)std::unique_lock&lt;mutex&gt; locker(mu,std::defer_lock); 其中参数std::defer_lock表明locker延迟锁定,在之后我们可以...原创 2018-07-14 15:29:46 · 256 阅读 · 0 评论