一 前提:之前代码的缺陷
在前面我们使用两个线程 ,一个线程读,一个线程写来完成对于共享数据访问。
我们把这个代码 先放在这里,方便回忆,然后说明代码可能存在的问题,然后改动。
class Teacher174 {
private:
mutex mymutex;
list<int> mylist;
public:
void writefunc() {
for (size_t i = 0; i < 1000; i++)
{
mymutex.lock();
mylist.push_back(i);
cout << "写入数据为: i= " << i << endl;
mymutex.unlock();
}
}
void readfunc() {
for (size_t i = 0; i < 1000; i++)
{
mymutex.lock();
if (!mylist.empty()) {
cout << "读取到的值为 :" << mylist.front() << endl;
mylist.pop_front();
}
cout << "读取第" << i << "次" << endl;
mymutex.unlock();
}
}
};
void main() {
Teacher174 tea;
thread readthread(&Teacher174::readfunc, &tea);
thread writethread(&Teacher174::writefunc, &tea);
readthread.join();
writethread.join();
cout << "end" << endl;
}
我们将多次运行的结果随便找一个贴出来
读取第0次
写入数据为: i= 0
写入数据为: i= 1
写入数据为: i= 2
写入数据为: i= 3
写入数据为: i= 4
写入数据为: i= 5
写入数据为: i= 6
写入数据为: i= 7
写入数据为: i= 8
写入数据为: i= 9
写入数据为: i= 10
写入数据为: i= 11
写入数据为: i= 12
写入数据为: i= 13
写入数据为: i= 14
写入数据为: i= 15
写入数据为: i= 16
写入数据为: i= 17
写入数据为: i= 18
写入数据为: i= 19
写入数据为: i= 20
写入数据为: i= 21
写入数据为: i= 22
写入数据为: i= 23
写入数据为: i= 24
写入数据为: i= 25
写入数据为: i= 26
写入数据为: i= 27
写入数据为: i= 28
写入数据为: i= 29
写入数据为: i= 30
写入数据为: i= 31
写入数据为: i= 32
写入数据为: i= 33
写入数据为: i= 34
写入数据为: i= 35
写入数据为: i= 36
写入数据为: i= 37
写入数据为: i= 38
写入数据为: i= 39
写入数据为: i= 40
写入数据为: i= 41
写入数据为: i= 42
写入数据为: i= 43
写入数据为: i= 44
写入数据为: i= 45
写入数据为: i= 46
写入数据为: i= 47
写入数据为: i= 48
写入数据为: i= 49
写入数据为: i= 50
写入数据为: i= 51
写入数据为: i= 52
写入数据为: i= 53
写入数据为: i= 54
写入数据为: i= 55
写入数据为: i= 56
写入数据为: i= 57
写入数据为: i= 58
写入数据为: i= 59
写入数据为: i= 60
写入数据为: i= 61
写入数据为: i= 62
写入数据为: i= 63
写入数据为: i= 64
写入数据为: i= 65
写入数据为: i= 66
写入数据为: i= 67
写入数据为: i= 68
写入数据为: i= 69
写入数据为: i= 70
写入数据为: i= 71
写入数据为: i= 72
写入数据为: i= 73
写入数据为: i= 74
写入数据为: i= 75
写入数据为: i= 76
写入数据为: i= 77
写入数据为: i= 78
写入数据为: i= 79
写入数据为: i= 80
写入数据为: i= 81
写入数据为: i= 82
写入数据为: i= 83
写入数据为: i= 84
写入数据为: i= 85
写入数据为: i= 86
写入数据为: i= 87
写入数据为: i= 88
写入数据为: i= 89
写入数据为: i= 90
写入数据为: i= 91
写入数据为: i= 92
写入数据为: i= 93
写入数据为: i= 94
写入数据为: i= 95
写入数据为: i= 96
写入数据为: i= 97
写入数据为: i= 98
写入数据为: i= 99
写入数据为: i= 100
写入数据为: i= 101
写入数据为: i= 102
写入数据为: i= 103
写入数据为: i= 104
写入数据为: i= 105
写入数据为: i= 106
写入数据为: i= 107
写入数据为: i= 108
写入数据为: i= 109
写入数据为: i= 110
写入数据为: i= 111
写入数据为: i= 112
写入数据为: i= 113
写入数据为: i= 114
写入数据为: i= 115
写入数据为: i= 116
写入数据为: i= 117
写入数据为: i= 118
写入数据为: i= 119
写入数据为: i= 120
写入数据为: i= 121
写入数据为: i= 122
写入数据为: i= 123
写入数据为: i= 124
写入数据为: i= 125
写入数据为: i= 126
写入数据为: i= 127
写入数据为: i= 128
写入数据为: i= 129
写入数据为: i= 130
写入数据为: i= 131
写入数据为: i= 132
写入数据为: i= 133
写入数据为: i= 134
写入数据为: i= 135
写入数据为: i= 136
写入数据为: i= 137
写入数据为: i= 138
写入数据为: i= 139
写入数据为: i= 140
写入数据为: i= 141
写入数据为: i= 142
写入数据为: i= 143
写入数据为: i= 144
写入数据为: i= 145
写入数据为: i= 146
写入数据为: i= 147
写入数据为: i= 148
写入数据为: i= 149
写入数据为: i= 150
写入数据为: i= 151
写入数据为: i= 152
写入数据为: i= 153
写入数据为: i= 154
写入数据为: i= 155
写入数据为: i= 156
写入数据为: i= 157
写入数据为: i= 158
写入数据为: i= 159
写入数据为: i= 160
写入数据为: i= 161
写入数据为: i= 162
写入数据为: i= 163
写入数据为: i= 164
写入数据为: i= 165
写入数据为: i= 166
写入数据为: i= 167
写入数据为: i= 168
写入数据为: i= 169
写入数据为: i= 170
写入数据为: i= 171
写入数据为: i= 172
写入数据为: i= 173
写入数据为: i= 174
写入数据为: i= 175
写入数据为: i= 176
写入数据为: i= 177
写入数据为: i= 178
写入数据为: i= 179
写入数据为: i= 180
写入数据为: i= 181
写入数据为: i= 182
读取到的值为 :0
读取第1次
读取到的值为 :1
读取第2次
读取到的值为 :2
读取第3次
读取到的值为 :3
读取第4次
读取到的值为 :4
读取第5次
读取到的值为 :5
读取第6次
读取到的值为 :6
读取第7次
读取到的值为 :7
读取第8次
读取到的值为 :8
读取第9次
读取到的值为 :9
读取第10次
读取到的值为 :10
读取第11次
读取到的值为 :11
读取第12次
读取到的值为 :12
读取第13次
读取到的值为 :13
读取第14次
读取到的值为 :14
读取第15次
读取到的值为 :15
读取第16次
读取到的值为 :16
读取第17次
读取到的值为 :17
读取第18次
读取到的值为 :18
读取第19次
读取到的值为 :19
读取第20次
读取到的值为 :20
读取第21次
读取到的值为 :21
读取第22次
读取到的值为 :22
读取第23次
读取到的值为 :23
读取第24次
读取到的值为 :24
读取第25次
读取到的值为 :25
读取第26次
读取到的值为 :26
读取第27次
读取到的值为 :27
读取第28次
读取到的值为 :28
读取第29次
读取到的值为 :29
读取第30次
读取到的值为 :30
读取第31次
读取到的值为 :31
读取第32次
读取到的值为 :32
读取第33次
读取到的值为 :33
读取第34次
读取到的值为 :34
读取第35次
读取到的值为 :35
读取第36次
读取到的值为 :36
读取第37次
读取到的值为 :37
读取第38次
读取到的值为 :38
读取第39次
读取到的值为 :39
读取第40次
读取到的值为 :40
读取第41次
读取到的值为 :41
读取第42次
读取到的值为 :42
读取第43次
读取到的值为 :43
读取第44次
读取到的值为 :44
读取第45次
读取到的值为 :45
读取第46次
读取到的值为 :46
读取第47次
读取到的值为 :47
读取第48次
读取到的值为 :48
读取第49次
读取到的值为 :49
读取第50次
读取到的值为 :50
读取第51次
读取到的值为 :51
读取第52次
读取到的值为 :52
读取第53次
读取到的值为 :53
读取第54次
读取到的值为 :54
读取第55次
读取到的值为 :55
读取第56次
读取到的值为 :56
读取第57次
读取到的值为 :57
读取第58次
读取到的值为 :58
读取第59次
读取到的值为 :59
读取第60次
读取到的值为 :60
读取第61次
读取到的值为 :61
读取第62次
读取到的值为 :62
读取第63次
读取到的值为 :63
读取第64次
读取到的值为 :64
读取第65次
读取到的值为 :65
读取第66次
读取到的值为 :66
读取第67次
读取到的值为 :67
读取第68次
读取到的值为 :68
读取第69次
读取到的值为 :69
读取第70次
读取到的值为 :70
读取第71次
读取到的值为 :71
读取第72次
读取到的值为 :72
读取第73次
读取到的值为 :73
读取第74次
读取到的值为 :74
读取第75次
读取到的值为 :75
读取第76次
读取到的值为 :76
读取第77次
读取到的值为 :77
读取第78次
读取到的值为 :78
读取第79次
读取到的值为 :79
读取第80次
读取到的值为 :80
读取第81次
读取到的值为 :81
读取第82次
读取到的值为 :82
读取第83次
读取到的值为 :83
读取第84次
读取到的值为 :84
读取第85次
读取到的值为 :85
读取第86次
读取到的值为 :86
读取第87次
读取到的值为 :87
读取第88次
读取到的值为 :88
读取第89次
读取到的值为 :89
读取第90次
读取到的值为 :90
读取第91次
读取到的值为 :91
读取第92次
读取到的值为 :92
读取第93次
读取到的值为 :93
读取第94次
读取到的值为 :94
读取第95次
读取到的值为 :95
读取第96次
读取到的值为 :96
读取第97次
读取到的值为 :97
读取第98次
读取到的值为 :98
读取第99次
读取到的值为 :99
读取第100次
读取到的值为 :100
读取第101次
读取到的值为 :101
读取第102次
读取到的值为 :102
读取第103次
读取到的值为 :103
读取第104次
读取到的值为 :104
读取第105次
读取到的值为 :105
读取第106次
读取到的值为 :106
读取第107次
读取到的值为 :107
读取第108次
读取到的值为 :108
读取第109次
读取到的值为 :109
读取第110次
读取到的值为 :110
读取第111次
读取到的值为 :111
读取第112次
读取到的值为 :112
读取第113次
读取到的值为 :113
读取第114次
读取到的值为 :114
读取第115次
读取到的值为 :115
读取第116次
读取到的值为 :116
读取第117次
读取到的值为 :117
读取第118次
读取到的值为 :118
读取第119次
读取到的值为 :119
读取第120次
读取到的值为 :120
读取第121次
读取到的值为 :121
读取第122次
读取到的值为 :122
读取第123次
读取到的值为 :123
读取第124次
读取到的值为 :124
读取第125次
读取到的值为 :125
读取第126次
读取到的值为 :126
读取第127次
读取到的值为 :127
读取第128次
读取到的值为 :128
读取第129次
读取到的值为 :129
读取第130次
读取到的值为 :130
读取第131次
读取到的值为 :131
读取第132次
读取到的值为 :132
读取第133次
读取到的值为 :133
读取第134次
读取到的值为 :134
读取第135次
读取到的值为 :135
读取第136次
读取到的值为 :136
读取第137次
读取到的值为 :137
读取第138次
读取到的值为 :138
读取第139次
读取到的值为 :139
读取第140次
读取到的值为 :140
读取第141次
读取到的值为 :141
读取第142次
读取到的值为 :142
读取第143次
读取到的值为 :143
读取第144次
读取到的值为 :144
读取第145次
读取到的值为 :145
读取第146次
读取到的值为 :146
读取第147次
读取到的值为 :147
读取第148次
读取到的值为 :148
读取第149次
读取到的值为 :149
读取第150次
读取到的值为 :150
读取第151次
读取到的值为 :151
读取第152次
读取到的值为 :152
读取第153次
读取到的值为 :153
读取第154次
读取到的值为 :154
读取第155次
读取到的值为 :155
读取第156次
读取到的值为 :156
读取第157次
读取到的值为 :157
读取第158次
读取到的值为 :158
读取第159次
读取到的值为 :159
读取第160次
读取到的值为 :160
读取第161次
读取到的值为 :161
读取第162次
读取到的值为 :162
读取第163次
读取到的值为 :163
读取第164次
读取到的值为 :164
读取第165次
读取到的值为 :165
读取第166次
读取到的值为 :166
读取第167次
读取到的值为 :167
读取第168次
读取到的值为 :168
读取第169次
读取到的值为 :169
读取第170次
读取到的值为 :170
读取第171次
读取到的值为 :171
读取第172次
读取到的值为 :172
读取第173次
读取到的值为 :173
读取第174次
读取到的值为 :174
读取第175次
读取到的值为 :175
读取第176次
读取到的值为 :176
读取第177次
读取到的值为 :177
读取第178次
读取到的值为 :178
读取第179次
读取到的值为 :179
读取第180次
读取到的值为 :180
读取第181次
读取到的值为 :181
读取第182次
读取到的值为 :182
读取第183次
读取第184次
读取第185次
读取第186次
读取第187次
读取第188次
读取第189次
读取第190次
读取第191次
读取第192次
读取第193次
读取第194次
读取第195次
读取第196次
读取第197次
读取第198次
读取第199次
读取第200次
读取第201次
读取第202次
读取第203次
读取第204次
读取第205次
读取第206次
读取第207次
读取第208次
读取第209次
读取第210次
读取第211次
读取第212次
读取第213次
读取第214次
读取第215次
读取第216次
读取第217次
读取第218次
读取第219次
读取第220次
读取第221次
读取第222次
读取第223次
读取第224次
读取第225次
读取第226次
读取第227次
读取第228次
读取第229次
读取第230次
读取第231次
读取第232次
读取第233次
读取第234次
读取第235次
读取第236次
读取第237次
读取第238次
读取第239次
读取第240次
读取第241次
读取第242次
读取第243次
读取第244次
读取第245次
读取第246次
读取第247次
读取第248次
写入数据为: i= 183
写入数据为: i= 184
写入数据为: i= 185
写入数据为: i= 186
写入数据为: i= 187
写入数据为: i= 188
写入数据为: i= 189
写入数据为: i= 190
写入数据为: i= 191
写入数据为: i= 192
写入数据为: i= 193
写入数据为: i= 194
写入数

最低0.47元/天 解锁文章
1500

被折叠的 条评论
为什么被折叠?



