多线程编程
作者:互联网
今天在学习多线程编程,自我总结一下
前景知识,你妈生了你们兄弟七个,你们兄弟七个都很爱玩(生了几个不是重点啊,重点是生了不止一个)
1. 多线程的特点
* 无序完成
就跟你妈放你们兄弟七个出去玩,谁先回家是不一定的。这就是多线程,一块出去玩。
* 并行
跟串行最大的区别就是,你们兄弟七个可以一起出去玩,而不是让你们一个玩完回来另一个才能出去。
2. 多线程的注意要点
* 数据竞争
你们兄弟七个手里都拿着一个量子手机,都可以使用这个手机打字,那老大打字的时候 老二也用,那打出来的字就乱了。为什么会乱呢,因为我们知道打一个汉字需要好几个拼音,假如老大想打一个“我”字,老二想打一个“你”字,老大刚按下w,还没按o呢,老二就按了n,那这样自然就乱咯。究其原因就是这个打字的操作不具有“原子性”,就是它可以被打断。如果说老大想打一个“哦”那就肯定会成功拉,因为就一个拼音嘛,打完个o就结束了,你老二拿什么打断我。
有三种数据是线程间共享的,分别是:全局变量、静态变量和共享指针。
这时候老大急了,正给女朋友发短信呢,老二给我打断了。那就得保证老大打字的时候老二不能干涉,就相当于给手机加了个锁,老大打完了再给老二用。就这样大家都能自由而正确的使用手机打字啦。
这时候老七急了,niemama的,你们一个个排队打完字了,我就轮到最后了,原本我是能和你们一起打字的,现在就沦落了?我不重要了呗?
得改。
好吧我编不下去了。
3. 常用的锁
* mutex互斥锁,就是一个干的时候另一个等着。
* lock_guard 不用显示的去锁,只在作用域内起作用,就跟局部变量一样
标签:七个,老大,编程,打字,老二,你们,多线程 来源: https://www.cnblogs.com/kenor/p/16242344.html