这个多线程程序为什么运行几次结果都不一样,不能总是出现我要的情况吗...

 我来答
深空游戏
2023-06-29 · 百度认证:东莞市深空信息咨询官方账号
深空游戏
向TA提问
展开全部

1、程序运行时,cpu给每上线程分配的时间片断不一样,不同线程优先级别分配的时间片断也不一样,一个线程会在分配到的时间片断内执行一些代码,时间一到,就轮到其他线程执行了,这样cup轮循每个线程。

2、因为你没有加同步互斥机制,所以如果没有足够的sleep的话,线程函数和main函数里的printf(%d\n,pid);之间的顺序是未知的,视你的系统环境而定。

3、线程你只要不告诉它等待,它是不会等其他线程先结束的。什么是线程,线程天生就是并行运行分支,哪怕你给它最低的优先级,那它也只是在同一时刻相比其他线程被执行的几率较低,而完全没有道理停下来等待。

4、因此这两个线程的输出结果是不可预知的。你所希望的轮流的输出,只是其中的一种可能结果,而并不是程序每一次运行的固定输出。建议你多运行几次程序看输出结果,应该是每一次的输出都是不一样的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式