C++主线程与子线程的关系
C++主线程与子线程的关系
一、主线程和子线程执行顺序
在C++中main函数是程序运行便会执行,即是主线程。在此之后创建的线程属于子线程。那么问题来了,主线程和子线程谁的优先级更高?
主线程总是能优先获得CPU资源,且主线程执行完后,程序(即进程)也就执行完了,这时子线程会被迫结束。
二、如何控制执行顺序
如果想要先执行子线程,然后再执行子线程应该如何做?
使用Windows.h提供的Sleep()函数。
通俗地说,当我们调用Sleep函数时,比如Sleep(100),它会提醒系统,执行它需要花费100ms,让CPU在时间片有大于等于100ms的时间时唤醒当前进程,先执行其它线程。意味着也就是放弃它剩余的时间片(就是放弃本次运行)。但是Windows操作系统并不是一个实时的操作系统,所以就算时间片大于等于100ms也并不一定执行该线程,这取决于当前CPU正在进行什么操作。
简单的理解为主线程如果开启Sleep函数,意味着放弃当前运行,让CPU先执行子线程。
TIPS:Sleep函数并不能保证线程按照某个顺序执行。线程和线程之间仍然是相互独立的执行。
C++主线程与子线程的关系相关推荐
- 多线程——主线程和子线程退出关系
分清两个概念 主线程和当前进程的关系:当前进程由主线程和若干个子线程组成. 若当前进程退出后,子线程也会跟着一起退出:若只是主线程退出,仍要分两种情况分析:实际上主线程退出后子线程的状态依赖于它所在的 ...
- 主线程和子线程的关系(讨论主线程结束,子线程是否要回收)
主线程和子线程,在操作系统里面其实是一样的,没有本质区别.至于主线程结束,子线程是否要回收,下面有两种比较特殊的情况. 第一种: 主线程退出了,子线程还可以执行. 主要是因为pthread_exit函 ...
- C#/.NET主线程与子线程之间的关系
以前一直没有在程序中写过总结,再翻开程序时却不知所云,所以我决定写总结 一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程. 有的博客上说"至少 ...
- c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响
这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...
- Java多线程面试题之如何让主线程等子线程执行完之后再执行
问题描述 现在有一个主线程X,和两个子线程A和B,A和B之间没有依赖关系且两者的执行时间不确定,现在要求如下: 1:不限制A和B执行顺序的 2:主线程X需要在子线程A和B执行完成之后再执行 方案1 1 ...
- 多线程之:主线程、子线程
1.进程中线程之间的关系 线程不像进程,一个进程中的线程之间是没有父子之分的,都是平级关系.即线程都是一样的, 退出了一个不会影响另外一个. 但是所谓的"主线程"main,其入口代 ...
- 主线程和子线程的区别,线程之间的通信
1.主线程来向子线程发送消息的方法 在平时写程序时,我们一般都是在子线程中向主线程发送消息,从而完成请求的处理,这个很常见,不用多说了.那么有时候,我们也可能碰到这样子的一种需求:需要主线程来向子线程 ...
- android判断主线程_Android主线程和子线程区别详解
主线程和子线程的区别 每个线程都有一个唯一标示符,来区分线程中的主次关系的说法. 线程唯一标示符:Thread.CurrentThread.ManagedThreadID; UI界面和Main函数均为 ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- Android线程之主线程向子线程发送消息
和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔.本篇我们就来讨论一下关于主线程向子线程如何发 ...
最新文章
- Spring踩坑记录
- UI控件无法响应点击等事件的探索
- Github拉取远端的时候提示“ssh: connect to host github.com port 22: Connection timed out”错误...
- Log4j2的性能为什么这么好?
- 产品经理成长三五事儿:搭建自己的成长模型
- python中str用法_python中的str()不能直接用吗
-问答-阿里云开发者社区-阿里云
- ComponentBase.createMetaData and manifest.json oRoute
- LeetCode 99. 恢复二叉搜索树(中序遍历)
- linux下如何为redis配置path,linux环境下如何启动redis
- Sentinel降级_异常数_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0041
- Scikit-learn库中的数据预处理(一)
- c++使用unordered_map与map的区别
- android flash游戏播放器代码,新flashplayer游戏播放器apk-新Flash游戏播放器(NEW Server Mode)预约V4.2安卓版-西西软件园...
- 用线性同余法生成伪随机数
- 第八章 项目质量管理
- 好多游戏,大部分都有修改器,大家赶紧下!
- 科学计算机求年金,科普如何科学使用普通计算器(CPA考试小技巧)
- 从 0 开始学支付系统搭建——解析「核算对账核心」
- “全球化”是一个漫长过程,海尔智家用了20年
- 十个全网最具创意的聊天机器人:漫威和联合国儿童基金会都在尝试使用聊天机器人...