C++11多线程小记

C++11标准库里添加了多线程和锁的库,简单的使用小例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
#include<Windows.h>
#include<thread>
void PrintThread( char c)
{
for( int i = 0; i < 1000; i++ )
{
cout << c;
cout.flush();
Sleep(1);//将线程处于睡眠状态
}
}
int main()
{
std::thread *a = new std::thread(PrintThread, 'a');
std::thread *b = new std::thread(PrintThread, 'b');
a->join();
b->join();
char c;
cin >> c;
return 0;
}

引入锁:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
#include<mutex>
#include<thread>
std::mutex m;
void PrintThread( char data )
{
char c = data;
for( int i = 0; i < 200; i++ )
{
m.lock();
for( int j = 0; j < 50; j++ )
{
cout << c;
cout.flush();
}
m.unlock();
}
}
int main()
{
std::thread a,b;
//std::thread *a = new std::thread( PrintThread, 'a' );
//std::thread *b = new std::thread( PrintThread,'b' );
a = std::thread(PrintThread, 'a');
b= std::thread(PrintThread, 'b');
a.join();
b.join();
char c;
cin >> c;
return 0;
}

本文标题:C++11多线程小记

文章作者:Yang Shuai

发布时间:2018年06月14日 - 19:06

最后更新:2018年06月21日 - 22:06

原始链接:https://ysbbswork.github.io/2018/06/14/C-11多线程小记/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!