社区
C++ 语言
帖子详情
请问:关于while(true)的问题
mybayern1974
2006-10-22 03:09:50
有没有什么办法自己写一个程序,使其总在后台运行,但不会占太多的cpu时间呢?比如我们在用media player的时候,它也是在一直运行,可cpu却不会占很多。而如果自己写一个小程序,在main()函数的最后写一句while(true),程序运行的时候去观察cpu使用情况,总会是100%。谢谢赐教!
...全文
322
16
打赏
收藏
请问:关于while(true)的问题
有没有什么办法自己写一个程序,使其总在后台运行,但不会占太多的cpu时间呢?比如我们在用media player的时候,它也是在一直运行,可cpu却不会占很多。而如果自己写一个小程序,在main()函数的最后写一句while(true),程序运行的时候去观察cpu使用情况,总会是100%。谢谢赐教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jokar
2006-10-22
打赏
举报
回复
you're welcome
mybayern1974
2006-10-22
打赏
举报
回复
thx
Jokar
2006-10-22
打赏
举报
回复
因为:输入比如;;
cin >> a; 这个会产生中断,你的程序会刮起来等待输入~ 简单的说 就是 cin >>a;这句是有阻塞的,在取得输入之前,你的程序码不会进行下去的~ 等得到输入之后,cin >>a;这句的作用才结束, 之后 当然就 是执行 输出的句子了~:)
mybayern1974
2006-10-22
打赏
举报
回复
比如这样(伪代码):
main()
{
if(敲入的字母是‘a’)
输出(hello world)
while(true)
{
sleep(time)
}
}
无论time是多少,敲入‘a’以后,系统都会立即输出hello world.
咋回事?谢谢!
Jokar
2006-10-22
打赏
举报
回复
做一个引起main的操作后,main都会立即执行。
------------------
你那个操作在哪??
但不同的time之间没区别呀?)烦请赐教
--------------------
当然有区别了,就是sleep的时间不同呀~
mybayern1974
2006-10-22
打赏
举报
回复
sure.这样的话肯定会先等10sec再执行。不过我的程序是这样的:
main()
{
...
while(true)
{
sleep(time)
}
}
为什么time设成1和设成10000的效果是一样的呢:做一个引起main的操作后,main都会立即执行。(如果time设成0,cpu就100%了;但只要大于0,cpu就很少,但不同的time之间没区别呀?)烦请赐教
Jokar
2006-10-22
打赏
举报
回复
怎么说呢,举个例子:用sleep(1000...),总之是sleep很大的一个数。这个sleep在main函数里。当做一个会引起main函数运行的操作后,为什么main会立即执行相应功能,而不是等待很长时间后才开始响应呢?
-----------------------
那你可以这样试试看:
Sleep(10000); // 10 seconds;
cout << "Hello, World !" << endl;
看看效果:)
mybayern1974
2006-10-22
打赏
举报
回复
怎么说呢,举个例子:用sleep(1000...),总之是sleep很大的一个数。这个sleep在main函数里。当做一个会引起main函数运行的操作后,为什么main会立即执行相应功能,而不是等待很长时间后才开始响应呢?
Jokar
2006-10-22
打赏
举报
回复
那个代表时间的长短~ 1就是 1ms;1000就是1000ms(也就是1s)~ 因为cpu处理速度很快~ 1ms对于它来说也是 很长的时间了~
mybayern1974
2006-10-22
打赏
举报
回复
我明白一点了。不过还是有个问题:sleep(1)和sleep(1000)有什么不同呢?当然,理论上说,前者是让当前的main线程挂起1(因为是把sleep写在main里),后者是让main进程挂起1000。但是我在运行程序时没发现有差别啊:做一个会调用main的操作后,二者都是立即运行,没有等待的时间(差别)啊,怎么理解?谢谢!
Jokar
2006-10-22
打赏
举报
回复
Sleep 表示挂起当前线程~ 进入休眠 这期间不会占用CPU资源~ 呵呵,看看msdn就知道了
ps:Thread.sleep(1) 怎么看着不像C/C++,倒像java之类的
mybayern1974
2006-10-22
打赏
举报
回复
我试了一下:
在main的最后,为什么写while(true),cpu就是100%,而while(true){Thread.sleep(1)},cpu就一直都是一个很小的数呢?(那个1当然还可以换成其他正数,只要不是0)我没理解为什么会这样。谢谢赐教!
Kusk
2006-10-22
打赏
举报
回复
Jokar(贪睡鼠★御姐控☆小宠王)的Sleep是比较合适的。
当Sleep被调用之后,当前进(线)程会被阻塞掉,CPU将等到Sleep时间到达之后唤醒该进(线)程,
而期间CPU可以处理其它的任务。
mybayern1974
2006-10-22
打赏
举报
回复
2楼的能解释一下后台线程吗?或是提供个简单的例子。谢谢!
Jokar
2006-10-22
打赏
举报
回复
while (true)
{
.....
Sleep(100) // #include <windows.h> 根据实时性要求 调整 sleep的时间
}
jixingzhong
2006-10-22
打赏
举报
回复
用 后台线程 ~
Debian 9软RAID实战:跨硬件兼容的生产级mdadm部署指南
RAID(独立磁盘冗余阵列)是保障存储高可用的基础技术,其核心原理在于通过数据条带化、镜像或奇偶校验实现容错与性能提升。Linux软RAID凭借内核原生支持、无需专用硬件、元数据跨平台可读等特性,在国产服务器(如曙光、华为iBMC、中兴R5300)、老旧设备利旧、ESXi定制ISO集成等场景中展现出不可替代的技术价值。尤其在Debian 9这类长期支持但内核机制特殊的发行版中,正确配置mdadm、initramfs加固、GPT分区对齐及元数据版本选择(如1.1),直接决定RAID能否跨重启存活、跨机器识别、
Debian 9下用mdadm构建高可用软件RAID实战指南
RAID(独立磁盘冗余阵列)是保障服务器数据持久性与可用性的基础存储技术,其核心原理是通过镜像、条带化或校验算法在多块物理磁盘间实现数据冗余与性能优化。软件RAID凭借内核级控制、硬件无关性和完整可观测性,在国产化服务器(如华为2288H V5、超聚变FusionServer)及老旧硬件平台上展现出独特技术价值。相比硬件RAID卡受限于固件功能与厂商锁定,mdadm可在Debian 9稳定内核4.9.x环境下直接管理裸盘,支持RAID 1/5/6/10等主流级别,并深度集成SMART健康监控、实时重建调控与
Ubuntu 16.04下用mdadm构建RAID 5实战指南
RAID(冗余磁盘阵列)是一种通过多块物理硬盘协同工作,提升数据可靠性与I/O性能的基础存储技术。其核心原理是利用条带化(striping)、镜像(mirroring)或校验(parity)等机制,在硬件故障时保障业务连续性。在Linux生态中,mdadm作为内核原生支持的软件RAID管理工具,提供完全可控、跨发行版兼容、无需专用硬件的部署能力,尤其适配Ubuntu 16.04 LTS(内核4.4.x + mdadm 3.3)这一广泛用于老旧服务器与NAS的稳定环境。它广泛应用于视频监控存储、中小数据库、文
linux重装软raid1,Debian软Raid安装笔记 - 使用mdadm安装raid1
近期在debian squeeze已有系统上使用mdadm安装了raid1,在此做个笔记。已有硬盘为/dev/sda, 500GB, 安装debian squeeze,新增一块/dev/sdb, 500GB,准备组成raid1。1. 详细的安装过程见如下链接: http://www.howtoforge.com/software-raid1-grub-boot-debian-etch这个链接非常详...
Debian搭建raid5_以及卸载
首先安装mdadm apt install -y mdadm 然后给虚拟机添加三块磁盘,每块磁盘10G,添加完磁盘之后重启虚拟机,输入fdisk -l就可以看到添加的磁盘的信息了 使用如下命令创建RAID5 mdadm -C /dev/md0 -l5 -n3 /dev/sd{b,c,d} -l 指定磁盘阵列等级 -n 指定使用多少块磁盘 raid5最少需要3块磁盘 创建完成之后使用如下命令可以查看磁盘阵列 mdadm -D /dev/md0 可以查看到如下的信息 /dev/...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章