2011-12-20 104 views
4

本質上我需要一種方式來啓動亞微秒線程睡眠,如parknanos所做的那樣。什麼是Java的LockSupport.parknanos的.NET等價物?

Thread.Sleep似乎只能精確到毫秒。

+2

你能告訴我們你需要等待不到1微秒? – sisve 2011-12-20 19:51:07

+1

@Simon Svensson:也許OP需要這樣做,就像* parkNanos *這樣的方法,呃...存在! ; ) – TacticalCoder 2011-12-20 20:15:21

+2

'Thread.Sleep'在默認情況下甚至精確到毫秒級。典型值爲16ms,除非有人稱'TimeBeginPeriod'來縮短它。這是一個窗口限制,而不是.net。如果Java設法以這樣的準確度入睡,我會感到驚訝。另一方面繁忙的等待,可以有更高的準確性。 – CodesInChaos 2011-12-20 20:41:59

回答

1
+1

「等待的持續時間因此取決於處理器的速度。」 - 不是很可預測...... – Tudor 2011-12-20 20:06:26

+0

也許 - 但它可以讓你等待更短的時間間隔。 Thread.Sleep無論如何只能給你100ms左右的精度。另外,您可以使用Diagnostics.StopWatch來衡量您等待了多長時間http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx – 2011-12-20 20:28:06

+1

這樣做的主要缺點是它是忙等待。但是隨着OP的要求這是一個必要的罪惡。 – CodesInChaos 2011-12-20 20:50:58

0

您可以使用性能定時器

http://msdn.microsoft.com/en-us/library/ff650674.aspx

然而,使用互操作的可能限制了這種方法

+0

我認爲'StopWatch'類是基於'QueryPerformanceCounter'的,所以你不需要任何手動互操作。 – CodesInChaos 2011-12-20 20:49:27

+0

@CodeInChaos你是對的 - 我的知識已經老了,我一直在想,框架中必須有一個類,但除了我在舊.net2天中所做的之外,什麼都找不到 - 添加它作爲答案。 – 2011-12-20 23:12:25

相關問題