相关疑难解决方法(0)

如何使用QueryPerformanceCounter?

我最近决定我需要为我的Timer类从使用毫秒更改为微秒,经过一些研究后,我认为QueryPerformanceCounter可能是我最安全的选择.(关于Boost::Posix它可能不适用于Win32 API 的警告让我有点失望).但是,我不确定如何实现它.

我正在做的是调用GetTicks()我正在使用的任何esque函数并将其分配给Timer的startingTicks变量.然后找到通过的时间量我只是从中减去函数的返回值startingTicks,当我重置计时器时,我再次调用该函数并为其分配startingTicks.不幸的是,从我看到的代码中,它并不像调用那么简单QueryPerformanceCounter(),而且我不确定我应该传递什么作为它的参数.

c++ windows timer

94
推荐指数
2
解决办法
17万
查看次数

如何在Windows上使线程睡眠时间小于一毫秒

在Windows上我遇到了一个我从未在Unix上遇到过的问题.这是如何使线程休眠不到一毫秒.在Unix上,您通常有许多选择(睡眠,睡眠和纳米睡眠)以满足您的需求.但是,在Windows上,只有Sleep具有毫秒级的粒度.

在Unix上,我可以使用select系统调用来创建一个非常简单的微秒睡眠:

int usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec = usec/1000000L;
    tv.tv_usec = usec%1000000L;
    return select(0, 0, 0, 0, &tv);
}
Run Code Online (Sandbox Code Playgroud)

如何在Windows上实现相同的目标?

c++ windows winapi sleep

53
推荐指数
10
解决办法
8万
查看次数

如何在.NET中设置处理器关系?

我们可以在C#应用程序中设置两个线程或两个任务以执行不同的处理器关联吗?

我已经读过SetThreadAffinityMask但没有找到应该如何使用的例子.

或者,TPL(任务并行库)有没有办法执行两个线程/高优先级的任务来使用100%的CPU?

.net c# multithreading

24
推荐指数
3
解决办法
4万
查看次数

需要精确的线程睡眠.最大1ms错误

我有运行循环的线程.我需要每5ms运行一次循环(1ms错误).我知道Sleep()函数不精确.

你有什么建议吗?

更新.我不能以其他方式做到这一点.在循环结束时,我需要某种睡眠.我也不想加载100%的CPU.

c++ winapi multithreading sleep loops

10
推荐指数
3
解决办法
2万
查看次数

定时器精度:c clock()与WinAPI的QPC或timeGetTime()

我想描述软件计时器的准确性.我不太关心它是如何准确的,但确实需要知道准确性是什么.

我已经研究了c函数clock()和WinAPI的函数QPC和timeGetTime,我知道它们都依赖于硬件.

我正在测量一个可能需要大约5-10秒的过程,而且我的要求很简单:我只需要0.1秒精度(分辨率).但我确实需要知道准确性是什么,最坏的情况.

虽然更优先考虑更准确,但我宁愿知道准确性差(500毫秒)并且考虑到它,而不是相信精确度更好(1毫秒)但不能记录它.

有没有人有关于如何表征软件时钟准确性的建议?

谢谢

c c++ winapi timer

5
推荐指数
2
解决办法
3174
查看次数

标签 统计

c++ ×4

winapi ×3

multithreading ×2

sleep ×2

timer ×2

windows ×2

.net ×1

c ×1

c# ×1

loops ×1