线程只能用死循环吗?
我的程序开了三个线程
一个用于串口等待接收数据,一个用于串口等待发送数据,一个用于UDP通信,每个线程我都加了死循环,否则线程就会结束
但是我发现这样对CPU不是件好事
请问写多线程普遍采用什么方法不让线程结束?
在此谢过
[解决办法]
线程/程序要一直执行下去,必然在某个地方有个循环,然后你可以控制循环的推出。
不过就LZ的问题,显然可以用select这样的IO复用来解决。
[解决办法]
看你线程用来做什么了,数据直接发送就好了,不用开线程,接收弄个线程,可以考虑一下用i/o模型来做。
[解决办法]
不让线程结束当然要循环,楼主不用为 CPU 担心,操作系统会进行调度,且循环中等待事件时往往都不占用 CPU,楼主多积累经验自然会了解的,记得设置循环退出条件就行了。
[解决办法]
对CPU不太好?那样的话,可以在每个死循环中sleep一小段时间。
[解决办法]
本来线程循环中就必须有Sleep或阻塞函数,否则CPU负荷会趋近100%(单核系统下);
当线程循环中有Sleep或阻塞函数时,就没必要担心浪费CPU负荷了。
不信的话可以打开任务管理器查看当前进程占用的CPU负荷有多大(应该不是很大,<3%)。
[解决办法]
sleep(1)以后你就会发现cpu使用率下去了