加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Thread.Sleep(1)的用途?

发布时间:2020-12-16 00:18:41 所属栏目:百科 来源:网络整理
导读:我正在阅读一些线程基础知识,在msdn网站上我发现了这段代码. // Put the main thread to sleep for 1 millisecond to // allow the worker thread to do some work: Thread.Sleep(1); 这是该页面的链接:http://msdn.microsoft.com/en-us/library/7a2f3ay4(v
我正在阅读一些线程基础知识,在msdn网站上我发现了这段代码.

// Put the main thread to sleep for 1 millisecond to
    // allow the worker thread to do some work:
    Thread.Sleep(1);

这是该页面的链接:http://msdn.microsoft.com/en-us/library/7a2f3ay4(v=vs.80).aspx.

为什么主线程睡眠时间为1毫秒?如果主线程持续运行,辅助线程是否会启动其任务?或者是一个需要1毫秒的任务的例子?如果任务一般需要5秒才能完成主线程应该睡眠5000毫秒?

如果这仅仅是关于CPU使用,这里是类似的Question about Thread.Sleep.

任何意见将不胜感激.

谢谢.

解决方法

该代码中的1不是特别的;因为事情并不那么精确,它总是会睡得比较长,并且当你将它取回时,放弃你的时间片并不等于操作系统的任何保证.

Thread.Sleep()中time参数的目的是,您的线程将至少在该时间内产生约.

所以代码只是明确地放弃了它的时间段.一般来说,不需要这样的代码,因为操作系统会为您管理您的线程,抢先中断它们以便在其他线程上工作.

这种代码通常用在“线程示例”中,其中作者想要强制一些人为的事件来证明一些竞争条件等(在你的例子中似乎是这种情况)

正如Jon Hanna对同一个问题的回答所指出的,Sleep(0)和Sleep(1)(或任何其他非零数字)之间存在微妙但重要的区别,正如ChrisF所暗示的那样,这在某些问题上很重要.线程情况.

这两个都涉及线程优先级;线程可以被赋予更高/更低的优先级,这样只要有更高优先级的线程有任何工作要做,优先级较低的线程就永远不会执行.在这种情况下,可能需要Sleep(1)……但是……

低优先级线程也受其他进程在同一系统上执行的操作的影响;因此,虽然您的进程可能没有运行更高优先级的线程,但如果其他任何线程运行,您的进程仍然无法运行.

但是,这通常不是您需要担心的事情;默认优先级是“正常”优先级,在大多数情况下,您不应更改它.提高或降低它有很多含义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读