解决方案 »
- 请问C#如何从Outlook里面获取邮件信息
- asp.net树形导航 关联数据库
- 10天了 每天睡几个小时 怎样不疲惫! 小问题
- 急请高人指教:C#设置WebProxy后发送HttpWebRequest,HttpWebResponse为何超时?
- button.Click +=new .....;注册了一个事件方法,如何判断Click上已经注册了方法?注册了几个?
- 高手请教:怎么将字符串转化为二进制的BitArray?
- 高分问一个简单问题!急,得到答案即结帖
- 神啊!救救我吧!200分求已读到的地址用listview显示出来,分不够加帖给,在线等,急急急!!
- c#中正则表达式如何判断输入的是中文
- 这个时钟怎么实现呢?
- c# 调用FreeLibrary 释放dll,无法覆盖dll文件?
- 求教如何将\u编码转中文
另一个是CPU不断的执行,然后线程自己去判断该干什么
很明显的前一个效率比较高好比你煮饭,是设定个闹钟,然后就去睡觉,还是每隔一分钟就去看看熟了没有?
恩,这个其实我也能够想象,但是问题是当前线程被Suspend之后一定是另外一个线程再Resume吧?如果这个没问题的话我是否可以想象有一个内核对象在一直做这件事情,发现一个线程需要被唤醒之后再去唤醒这个线程?如果这个也没问题的话是否还是有一个线程比如说这个内核对象在做轮询对所有的状态做一个检查?不知道我的猜测是否合乎逻辑,或者说查查什么样的书籍会有答案?不吝赐教,谢谢。
线程也不过是一段代码,得放到CPU里才能真正执行
CPU虽然是多核的,但是也不会每个线程都对应一个内核,是分时处理的
CPU会不断切换线程来执行,让每个线程都能得到执行,而不是有的一下就执行完了,另一个还在傻等
如果你用了while(true),那么到时间它就会被执行,结果执行的时候没干什么有用的事情,纯粹是在浪费CPU资源
而你用了waitone,那么该到它执行的时候,cpu发现它正在被挂起,不应该执行它,就会先执行别的线程,这样效率才高
当然这样做有可能睡过头了,已经可以执行了,但是多睡了一会,导致效率下降