线程调度有关问题
线程调度问题我在主线程里通过CreateThread创建了第2个线程,第2个线程只有while(true){}这个死循环。结果发
线程调度问题
我在主线程里通过CreateThread创建了第2个线程,第2个线程只有
while(true)
{
}
这个死循环。结果发现第2个线程基本上把CPU都抢占了,其他进程基本上都响应不了鼠标键盘消息。搞不懂是什么原因。按道理,操作系统应该会轮转的调度各个线程,其他线程应该也分配到自己的时间片,所以应该能正常的响应鼠标键盘消息才正确啊。
[解决办法]
你电脑单核的吧?
[解决办法]
友情帮顶,友情帮顶
[解决办法]
会,不过写得好的线程都不会像你这么没事占所有剩余CPU
[解决办法]
看下孙鑫的C++视频
[解决办法]
[解决办法]简单说其他线程没事都会自己放弃时间片等用户输入网络IO等,而操作系统认为你的线程一直需要时间片,所以让你的线程占大部分CPU
[解决办法]在主线程
while(TRUE)
{
}
然后你会发现主线程跟副线程各占50%.
而且你的cpu是单核的.
每个线程只能在某一个核心上运行.
[解决办法]让你的线程休息一下 !呵呵
[解决办法]因为别人都很谦虚
但是你得线程太霸道了
[解决办法]肯定会是一个死循环撒,线程的运行是以时间片轮转的方式来执行的,由于时间特别短给人的感觉就是几个线程在并发执行。相信LZ在看多线程编程时应该注意到一个问题,就是在子线程函数里面都有一个Sleep函数,这就是为了让这个子线程交出CPU的控制权。你的子线程一个while(true)循环体里面啥都不做,那很显然,当轮到他执行时就会一直占用CPU,太霸道了吧。应该SLEEP下给人家个机会撒
[解决办法]用Sleep(0)吧。至于为什么用0,自己去看看MSDN的文档。