Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多核和线程感知.Net秒表?_.net_Performance_Stopwatch - Fatal编程技术网

多核和线程感知.Net秒表?

多核和线程感知.Net秒表?,.net,performance,stopwatch,.net,Performance,Stopwatch,众所周知,秒表在所有内核上运行的多线程异步应用程序中可能会出现问题 在多处理器计算机上,线程在哪个处理器上运行并不重要。但是,由于BIOS或硬件抽象层(HAL)中的错误,您可以在不同的处理器上获得不同的计时结果。要为线程指定处理器关联,请使用ProcessThread.ProcessorAffinity方法 有没有什么方法可以让我得到一些可靠的、具有高分辨率/准确性的、跨cpu核心一致的、类似于刻度/时间戳的值 如果不可能使秒表(QueryPerformanceCounter)多核安全,那么在多

众所周知,秒表在所有内核上运行的多线程异步应用程序中可能会出现问题

在多处理器计算机上,线程在哪个处理器上运行并不重要。但是,由于BIOS或硬件抽象层(HAL)中的错误,您可以在不同的处理器上获得不同的计时结果。要为线程指定处理器关联,请使用ProcessThread.ProcessorAffinity方法

有没有什么方法可以让我得到一些可靠的、具有高分辨率/准确性的、跨cpu核心一致的、类似于刻度/时间戳的值

如果不可能使秒表(QueryPerformanceCounter)多核安全,那么在多核之间获得良好时间戳的下一个最佳方法是什么DateTime.UtcNow.Ticks环境.TickCount?还有其他柜台吗


我确实需要比DateTime.UtcNow.Ticks提供的分辨率更好的分辨率。(10-15毫秒)

我自己也在寻找这个特定问题的答案,我看到的最好的答案是DateTime.UtcNow。似乎没有高分辨率和可靠的计数器(我在谷歌上搜索了很久,至今还没有发现任何计数器)。

事实上,根据后Windows XP,在多处理器系统上使用秒表/QueryPerformanceCounter应该没问题。如果系统不支持固定TSC,QPC将自动使用不同的计时器策略

不过,请注意虚拟化系统的注释部分。在那种特殊情况下,你似乎必须小心