关于多线程同步事件处理内在逻辑的探究 多线程 .net 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本质区别就是,一个是CPU将线程挂起,等它可以执行了再执行它另一个是CPU不断的执行,然后线程自己去判断该干什么很明显的前一个效率比较高好比你煮饭,是设定个闹钟,然后就去睡觉,还是每隔一分钟就去看看熟了没有? 恩,这个其实我也能够想象,但是问题是当前线程被Suspend之后一定是另外一个线程再Resume吧?如果这个没问题的话我是否可以想象有一个内核对象在一直做这件事情,发现一个线程需要被唤醒之后再去唤醒这个线程?如果这个也没问题的话是否还是有一个线程比如说这个内核对象在做轮询对所有的状态做一个检查?不知道我的猜测是否合乎逻辑,或者说查查什么样的书籍会有答案?不吝赐教,谢谢。 你所谓的内核,就是CPU的内核啊线程也不过是一段代码,得放到CPU里才能真正执行CPU虽然是多核的,但是也不会每个线程都对应一个内核,是分时处理的CPU会不断切换线程来执行,让每个线程都能得到执行,而不是有的一下就执行完了,另一个还在傻等如果你用了while(true),那么到时间它就会被执行,结果执行的时候没干什么有用的事情,纯粹是在浪费CPU资源而你用了waitone,那么该到它执行的时候,cpu发现它正在被挂起,不应该执行它,就会先执行别的线程,这样效率才高 此外,在while(true)里加上sleep,能够更好的利用CPU资源,CPU发现线程正在休眠,休眠时间还没到,就不会先唤醒它当然这样做有可能睡过头了,已经可以执行了,但是多睡了一会,导致效率下降 c# 删除控件中选定行的数据 [求个简单的正则] C# winform listView如何绘制线条? 请高手提供解决方案(银行的一个小程序) 非常谢谢 ,在线等待 ........................................ 关于DataTable的查询问题 Request.QueryString.Count用不了 如何将xml文件中的记录更新到sqlserver中 用delphi调用c#的dll的问题 请高手在线指点! 急! C#初学者 不知道主题怎么描述,路过的进来帮忙看看 c# 调用FreeLibrary 释放dll,无法覆盖dll文件? 求教如何将\u编码转中文
另一个是CPU不断的执行,然后线程自己去判断该干什么
很明显的前一个效率比较高好比你煮饭,是设定个闹钟,然后就去睡觉,还是每隔一分钟就去看看熟了没有?
恩,这个其实我也能够想象,但是问题是当前线程被Suspend之后一定是另外一个线程再Resume吧?如果这个没问题的话我是否可以想象有一个内核对象在一直做这件事情,发现一个线程需要被唤醒之后再去唤醒这个线程?如果这个也没问题的话是否还是有一个线程比如说这个内核对象在做轮询对所有的状态做一个检查?不知道我的猜测是否合乎逻辑,或者说查查什么样的书籍会有答案?不吝赐教,谢谢。
线程也不过是一段代码,得放到CPU里才能真正执行
CPU虽然是多核的,但是也不会每个线程都对应一个内核,是分时处理的
CPU会不断切换线程来执行,让每个线程都能得到执行,而不是有的一下就执行完了,另一个还在傻等
如果你用了while(true),那么到时间它就会被执行,结果执行的时候没干什么有用的事情,纯粹是在浪费CPU资源
而你用了waitone,那么该到它执行的时候,cpu发现它正在被挂起,不应该执行它,就会先执行别的线程,这样效率才高
当然这样做有可能睡过头了,已经可以执行了,但是多睡了一会,导致效率下降