Timer 双核wp8手机上的QueryPerformanceCounter问题--需要精确的替代方案

Timer 双核wp8手机上的QueryPerformanceCounter问题--需要精确的替代方案,timer,windows-phone-8,performancecounter,c++-cx,Timer,Windows Phone 8,Performancecounter,C++ Cx,我正在将一些音频播放代码从iOS移植到wp8(不要问为什么),我的wp8设备上的计时器遇到了一些问题。经过一些粗略的研究,我决定使用QueryPerformanceCounter作为iOS上MachAbsoluteTime的一个足够好的并行工具。然而,由于我的设备(诺基亚Lumia 920)是双核的,QPC遇到了问题,我的Delta通常为负值或高得离谱。我需要我的回放循环每10毫秒运行一次,但是这些虚假的计时器结果正在使我的代码失效 我试图以某种方式赋予循环处理器亲和性,但我找不到这样做的方法,

我正在将一些音频播放代码从iOS移植到wp8(不要问为什么),我的wp8设备上的计时器遇到了一些问题。经过一些粗略的研究,我决定使用QueryPerformanceCounter作为iOS上MachAbsoluteTime的一个足够好的并行工具。然而,由于我的设备(诺基亚Lumia 920)是双核的,QPC遇到了问题,我的Delta通常为负值或高得离谱。我需要我的回放循环每10毫秒运行一次,但是这些虚假的计时器结果正在使我的代码失效


我试图以某种方式赋予循环处理器亲和性,但我找不到这样做的方法,因为我可以使用任务或线程池,而不是在wp8上显式创建线程。有什么建议吗?有没有其他计时器可以使用,或者有没有给任务或线程池工作项proc affinity的方法?

这个线程是在2009年发布的——但从那以后有没有任何更新/突破?WAG,但是Stopwatch类调用QueryPerformanceCounter,我从来没有遇到过奇怪的Delta问题。但我从未在WP应用程序中使用过它,所以我不确定它是否适用。您可以尝试切换调用以使用Stopwatch实例,看看是否有效。如果Stopwatch类调用QPC,我应该不会得到任何不同的结果。不同内核之间缺少勾号同步,这是此问题的根本原因。或者,它可能会正确调用QPC。我无法为您测试这一点(不是为WP-dev设置的),因此您可以执行以下操作之一:1)声称它无法工作,甚至不尝试,然后继续等待其他答案,或者2)对它进行原型化,看看它是否工作得更好。或者,换言之,你可以坐在你的手上,或者尝试其他可能有效也可能无效的东西。您的选择。因此,在我发布的链接中:“如果您有一个多核计算机上运行的线程应用程序,QueryPerformanceCounter可以(并且将)返回不同的值,这取决于代码在哪个内核上执行。请参阅这篇MSDN文章。(rdtsc也有同样的问题)。”