首页 新闻 会员 周边 捐助

Linux多线程不能理解呀

0
悬赏园豆:50 [已解决问题] 解决于 2021-11-24 19:12



大哥们,多线程的理解,到底是怎么回事,for循环中,明明i<5,怎么会打印出来5呢,实在是理解不了,而且不按顺序打印,就算是多线程,那也得按照for循环一步一步走吧 不能理解呀 各位大佬 看一眼小弟吧 谢谢你们

拿着百万来娶你的主页 拿着百万来娶你 | 初学一级 | 园豆:-21
提问于:2021-11-21 17:09
< >
分享
最佳答案
0

你出问题的就是在线程传参数的时候出了问题,更没有明白多线程的本质。先等会我给你画一个图,你就明白了。👻

收获园豆:50
寂静的羽夏 | 老鸟四级 |园豆:2095 | 2021-11-21 17:47

好的 跪谢大哥

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 17:49

@拿着百万来娶你:
自己画图水平太烂了,尤其后面不知道咋画了,文字描述吧。我以3个线程为例子介绍。如有不懂之处,欢迎追问。

寂静的羽夏 | 园豆:2095 (老鸟四级) | 2021-11-21 18:04

@拿着百万来娶你: 你这东西涉及到线程安全了。你可以搜一搜,你传地址类似传来一个对于这几个创建好线程来说是全局变量的东西,就会出现杂七杂八的自己料想不到的问题。

寂静的羽夏 | 园豆:2095 (老鸟四级) | 2021-11-21 18:08

@寂静的羽夏: 大哥 我懂了 还有就是那个为什么能打出5这个给数字 明确给出了i < 5 的呀

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 18:08

@拿着百万来娶你: 你把这个循环执行完最后一步,也就是上一步 i=4的时候,然后 i++,i=5,不满足条件退出。而正巧有一个线程这个时候用了i这个地址,就打印出5 了。

寂静的羽夏 | 园豆:2095 (老鸟四级) | 2021-11-21 18:10

@寂静的羽夏: 好的 谢谢大哥 我终于懂了呀 跪谢大哥

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 18:12

@寂静的羽夏: 大哥牛逼

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 18:12

@寂静的羽夏: 大哥 那个线程函数pthread_create函数中最后一个参数将取地址符给删了 然后再给上面那个 thread_fun函数中的第一句(int)arg 将第一个解引用符删了 就可以控制每一轮打印的都是01234这五个数字 但是还是是无序的 这什么原理 您知道不

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 18:18

@拿着百万来娶你: 我给你白解释了,回去再看几遍。😂

寂静的羽夏 | 园豆:2095 (老鸟四级) | 2021-11-21 18:20

@寂静的羽夏: 好的 大哥

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-21 18:20

@拿着百万来娶你: 就是线程没有执行顺序嘛,快给大哥上豆豆 (๑‾ ꇴ ‾๑)!

不想输入手机号和邮箱 | 园豆:206 (菜鸟二级) | 2021-11-22 14:26

@不想输入手机号和邮箱: 我看一下咋上豆豆 刚来博客园 有些东西不会的 抱歉

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-24 19:11

@寂静的羽夏: woc 感谢大哥呀 终于给这玩意搞明白了 跪谢好大哥

拿着百万来娶你 | 园豆:-21 (初学一级) | 2021-11-24 19:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册