|
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 |
#include <iostream>#include <thread>#include <list>#include <queue>#include <mutex>#include <random>#include <Windows.h>using
namespace std;uniform_int_distribution<int> u(1, 100);default_random_engine e;mutex mtx;void
push_ivec(queue<int> *a){ for
(int
i = 0; i < 100; i++) { int
temp = u(e); cout << "push: "
<< temp << endl; a->push(temp); cout << "size = "
<< a->size() << endl; } }void
get_ivec(queue<int> *a){ for
(int
i = 0; i < 100; i++) { //cout << "size = " << a->size() << endl; if
(a->size() != 0) { int
temp = a->front(); a->pop(); cout << "pop: "
<< temp << endl; cout << "size = "
<< a->size() << endl; } } }void
main(){ queue<int> a; thread
p1(push_ivec, &a); //thread p2(push_ivec, &a); Sleep(10); thread
g1(get_ivec, &a); //thread g2(get_ivec, &a); //thread g3(get_ivec, &a); p1.join(); //p2.join(); g1.join(); //g2.join(); //g3.join(); //cout << "size = " << a.size() << endl; cout << "-------------------"
<< endl; cout << "size = "
<< a.size() << endl; } |
原文:http://www.cnblogs.com/wk23/p/3524535.html