kernel32.dll Sleep 和 Thread.Sleep() 之间有什么区别

问题描述 投票:0回答:2

以下内容之间是否有任何差异(性能、实现……等等):

我)

DllImport("kernel32.dll")]
        public extern static void Sleep(uint msec);

..然后调用Sleep函数

ii)

Thread.Sleep()
c# multithreading sleep wait kernel32
2个回答
2
投票

其实差别很大。

这篇博文解释了为什么托管线程永远不应该执行非托管阻塞(如果可能的话)。 官方 MSDN 文档具有相同的指南,但没有所有底层细节。

附注

Thread.Sleep
是程序设计不佳的标志


-1
投票

我不这么认为。 它们都只在当前线程上工作。

在主线程中使用 Sleep 函数时要小心,因为依赖同步时序的程序通常会在外部配置更改时导致问题。

在支持或监听线程中使用睡眠通常不是问题。

© www.soinside.com 2019 - 2024. All rights reserved.