C#如何延迟1微秒
4个回答
展开全部
C#没有办法精确延时1微秒,中间调度时间尺度与微秒相当
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用 Thread.Sleep(),但是单位需要去换算一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
wait方法!
事实上,Sleep和Wait都可以延时,但是Sleep之后,重新由系统调用线程,这个需要时间的!所以sleep也可以延时指定的时间,启动时间却不知道了,而wait则是持有资源直接进行等待,所以基本上来说可以精确时指定的时间的!
一般我们都认为sleep/wait都是可达到指定时间,如果量级是在秒上的话(忽略了sleep之后重新获得资源的等待时间),如果类似于毫秒与微秒的级别时不得不考虑堵塞之后系统干的事了!正常的情况下,在调整算法时会使用到nop(停机码)来调整运行的时间,这个级别与CPU的频率有关。而现在语言为了防止类似的情况,所以引用了一个新的单位叫“滴嗒”的单位,也就是ticket,我们的Timespan的可以精确到这个单位的!注意,Timespan可以精确到滴嗒,但Datetime却只精确到秒后七位!也就是说DateTime运行出来的值虽然有滴嗒,但其精确值已经只到微秒了(第七位其实只有1/3度量)!
比如:用两个DateTime来测试你程序运行时间,那只能是微级估计而已——别告诉别人你精确到了多少,应该用的是StopWatch类才是精确确定运行时间的(运行代码时受到多种因素影响,多次值也并不完全一样)。所以在C#中实现类似的微秒级还是可以的!
由于IL的缘故,如果实现类似于nop停机码时,在C#语言中确实无法实现,我在IL语言中也没有发现其实现,但我估计是有实现的,只不过是MSIL并未公布。至少在CLR肯定会存在类似nop的代码的翻译的。
事实上,Sleep和Wait都可以延时,但是Sleep之后,重新由系统调用线程,这个需要时间的!所以sleep也可以延时指定的时间,启动时间却不知道了,而wait则是持有资源直接进行等待,所以基本上来说可以精确时指定的时间的!
一般我们都认为sleep/wait都是可达到指定时间,如果量级是在秒上的话(忽略了sleep之后重新获得资源的等待时间),如果类似于毫秒与微秒的级别时不得不考虑堵塞之后系统干的事了!正常的情况下,在调整算法时会使用到nop(停机码)来调整运行的时间,这个级别与CPU的频率有关。而现在语言为了防止类似的情况,所以引用了一个新的单位叫“滴嗒”的单位,也就是ticket,我们的Timespan的可以精确到这个单位的!注意,Timespan可以精确到滴嗒,但Datetime却只精确到秒后七位!也就是说DateTime运行出来的值虽然有滴嗒,但其精确值已经只到微秒了(第七位其实只有1/3度量)!
比如:用两个DateTime来测试你程序运行时间,那只能是微级估计而已——别告诉别人你精确到了多少,应该用的是StopWatch类才是精确确定运行时间的(运行代码时受到多种因素影响,多次值也并不完全一样)。所以在C#中实现类似的微秒级还是可以的!
由于IL的缘故,如果实现类似于nop停机码时,在C#语言中确实无法实现,我在IL语言中也没有发现其实现,但我估计是有实现的,只不过是MSIL并未公布。至少在CLR肯定会存在类似nop的代码的翻译的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sleep(1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询