sleep(0)作用

假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?
某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?

操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片算法,而Windows则属于抢占式的。

在时间片算法中,所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在 时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程 序所要做的就是维护一张就绪进程列表,,当进程用完它的时间片后,它被移到队列的末尾。

在抢占式操作系统中,假设有若干进程,操作系统会根据他们的优先级、饥饿时间(已经多长时间没有使用过 CPU 了),给他们算出一 个总的优先级来。操作系统就会把 CPU 交给总优先级最高的这个进程。当进程执行完毕或者自己主动挂起后,操作系统就会重新计算一 次所有进程的总优先级,然后再挑一个优先级最高的把 CPU 控制权交给他。

Sleep函数是告诉操作系统“在未来的多少毫秒内我不参与CPU竞争”

Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。竞争的结果也许是当前线程仍然获得CPU控制权,也许会换成别的线程获得CPU控制权。

Resume函数是“告诉操作系统我从现在起开始参与CPU竞争了”,这个函数的调用并不能马上使得这个线程获得CPU控制权。

时间: 2024-10-10 06:32:26

sleep(0)作用的相关文章

setTimeout(call,0)作用

经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后面评论上不吝指出. 1.实现javascript的异步:正常情况下javascript都是按照顺序执行的.但是我们可能让该语句后面的语句执行完再执行本身,这时就可以用到setTimeout延时0ms来实现了.如: alert(1); setTimeout("alert(2)", 0); al

void 0作用

undefine 是可以被赋值的. 但是void 操作符 通过 计算 void 后面的变量名后还是会返回一个undefined ,这样就保证了你的undefined即使被定义了,采用void 表达式,还是会得到正确的undefined 方法二 angular中采用的undefined,在一个方法中定义一个参数,但是在调用的时候不传入这个参数,然后在方法体内调用这个参数,那么得到的值就是正确的undefined.

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

<转载> 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供

ThinkPHP 路由解析(四种url的意义、区别、以及设置某一种url的真实作用)

原理: 通过url地址get参数找到指定的控制器,并进行对应方法调用请求 http://网址/index.php?m=模块名称&c=控制器&a=方法 ThinkPHP框架url可以有以下四种 1.http://网址/index.php?m=模块名称&c=控制器&a=方法   基本get模式 2.http://网址/index.php/模块/控制器/方法                        路径模式 pathinfo 3.http://网址/模块/控制器/方法   

Linux安全基础知识

1      文件操作 1.1  创建文件夹(目录)mkdir 命令:mkdir 例子:[email protected]:~# mkdir testfile 创建testfile目录(文件夹) 1.2  删除文件夹(目录)rmdir 命令:rmdir 例子:[email protected]:~# rmdir testfile 删除testfile目录(文件夹). 注意:这个命令只能用来删除空目录,如果目录下面有子文件则会失败. 1.3  删除文件夹(目录)rm 命令:rm 例子:[email

CSS中几种选择器和他们的优先级

CSS的基本选择器(三种) id或者class值不能用纯数字表示 可以有 "字母数字-_" 1.元素选择器                                         h1{.......} 2.ID选择器      只能作用于一个标签 因为一个页面中的id不能重复       #id1{......} 3.类选择器    可以作用于多个标签                                .class1{......} CSS的其他选择器 在不更改内

centos7基础文档一

centos7基础文档一 一.centos7与原有版本的区别 1 文件系统 centos7选择了xfs作为 默认的文件系统.但是之前版本的所有的文件系统仍然支持,如:EXT文件系统之类的,而是对未来爆炸式的增长的数据量,ext的文件系统已经不能满足存储了,而XFS的文件系统完全是为大数据而生的,单个文件系统最大可以支持到8EB大小,单个文件的大小为16T,并且提供了丰富的日志系统,是应对大数据存储的强大文件系统.XFS是扩展性高,高性能的文件系统,于是RHEL/centos7的默认文件系统 可通

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

面向对象的链式调用

1. 对象的链式调用 function Chain(){ this.n=0;//属性不一定一开始的时候全部都要初始化 this.fn1=function(_obj){//this指向  new Chain()实例化的对象 alert(this.n++);//注意:alert(this.n++)与this.fn1中的this 不一定指向的对象是一样的 return this; } this.fn2=function(){//同上 alert(this.n++);//注意:alert(this.n+