日期:2014-05-17  浏览次数:21359 次

C# 如何延迟1微秒??
Sleep最少只能1ms


我用for空循环好像不行。。直接被跳过了

------解决方案--------------------
延迟1微秒的目的是?
------解决方案--------------------
反问一个东西,什么设备可以延迟一微秒?
------解决方案--------------------
记录下datetime.now,在while(1)里做减法判断就行了
------解决方案--------------------
thread.sleep(0.1) ;

呵呵呵呵。。。不知道会不会报错
------解决方案--------------------
延迟1微秒?
lz这样做的目的是什么
------解决方案--------------------
引用:
记录下datetime.now,在while(1)里做减法判断就行了

爱卿言之有理
------解决方案--------------------
引用:
thread.sleep(0.1) ;

呵呵呵呵。。。不知道会不会报错

1微秒是百万分之一秒,一纳秒是10亿分之一秒。0.1毫秒不等于一微秒
------解决方案--------------------
需求上写的是需要延迟1微秒的,是什么功能?
------解决方案--------------------
thread.sleep(0,1);
休眠。
------解决方案--------------------
引用:
你问我我问谁,需求上他们怎么要求我就怎么做,哪里来的那么多为什么?

你直接让需求来写代码比较好。
------解决方案--------------------
这种需求要直接对CPU时钟来操作才可能做到,C#根本不能直接访问硬件,你说可行吗?
------解决方案--------------------
引用:
引用:你问我我问谁,需求上他们怎么要求我就怎么做,哪里来的那么多为什么?
你直接让需求来写代码比较好。

同意。。。
------解决方案--------------------
Windows不是实时操作系统,小于系统时间片调度的延迟没有意义,就算实时操作系统,你也得考虑总线、内存、IO的延迟了。给你的建议就是根本不要延迟,你就和你的客户说延迟了,他们自己想办法验证是不是延迟了1微秒。

顺便说下,1us=0.000001s,也就是一个2GHz CPU 2000个时钟周期。理论上来说,你找一个1时钟周期执行1次的指令(比如nop)执行2000次就可以了。
------解决方案--------------------
引用:
Windows不是实时操作系统,小于系统时间片调度的延迟没有意义,就算实时操作系统,你也得考虑总线、内存、IO的延迟了。给你的建议就是根本不要延迟,你就和你的客户说延迟了,他们自己想办法验证是不是延迟了1微秒。

顺便说下,1us=0.000001s,也就是一个2GHz CPU 2000个时钟周期。理论上来说,你找一个1时钟周期执行1次的指令(比如nop)执行2000……


曹版主这个回答厉害,不过人家要C#
------解决方案--------------------
引用:
引用:
Windows不是实时操作系统,小于系统时间片调度的延迟没有意义,就算实时操作系统,你也得考虑总线、内存、IO的延迟了。给你的建议就是根本不要延迟,你就和你的客户说延迟了,他们自己想办法验证是不是延迟了1微秒。

顺便说下,1us=0.000001s,也就是一个2GHz CPU 2000个时钟周期。理论上来说,你找一个1时钟周期执行1次的指令(比如no……


C#当然也能写出来,问题是这是一个糊鬼的事情,所以根本不需要写。
------解决方案--------------------
lz把“需求”翻译为Thread.Sleep,这根本就应该退回给需求去了!
------解决方案--------------------
引用:
我用for空循环好像不行。。直接被跳过了
你让电脑“唉呀”地叫一声算了。
------解决方案--------------------
刚查查msdn,C# 还是提供了类似的参数机制来调用的,不过就准确度而言,惨不忍睹。

        public static void SleepTest()
        {
            int count = 1000;