有很多关于如何每 N 秒执行某项操作的提示,但我没有发现任何内容明确说明这些方法中的任何一个是否由于延迟而慢慢地与系统时钟不同步。
我有一个在 Windows 上运行的多线程应用程序。我需要知道在更高优先级任务和线程允许的尽可能少的毫秒内,一个特定线程将根据系统时钟在“精确”凌晨 1 点可靠地执行,然后在凌晨 1 点 + N 秒、凌晨 1 点 + 2N 秒等。 .. 并在晚上 11 点、晚上 11 点 + N、晚上 11 点 + 2N 之前一直可靠地执行此操作,依此类推。是的 - 情况(无论如何对我来说)每小时有整数个 N 秒周期。
我完全希望线程执行的实际时间为 1am + d1、1am + N + d2、1am + 2N + d3,...其中每个 d(i) 都是一些延迟增量。这也很好,只要 delta 值的分布保持相当一致且相当低——通常最多只有几十毫秒,很少有峰值高于此值。我不介意系统时钟是否与全局时间标准不同步。
为此,我可以使用哪些时序结构?有没有什么东西可以自己保持同步,或者我是否必须编写一些代码来随着处理器负载在一天中的上升和下降而不断调整自身以保持同步?
最佳答案
只要看看从现在到下一次您应该醒来的时间,然后睡那么长的时间。因此,不是将重复计时器设置为每 n 秒关闭,而是在每次唤醒时设置一个一次性计时器,无论您从现在到时间轴上的下一个点之间需要经过多少时间。
更新:我编写了一个测试程序来查看重复计时器是否会漂移。
程序在下一分钟开始,然后每 5 秒唤醒一次:
#include <windows.h>
#include<stdio.h>
ULONGLONG convertTime(SYSTEMTIME st) {
FILETIME ft;
ULARGE_INTEGER tm;
SystemTimeToFileTime(&st, &ft);
tm.u.LowPart = ft.dwLowDateTime;
tm.u.HighPart = ft.dwHighDateTime;
return tm.QuadPart;
}
ULONGLONG getNextMinute() {
SYSTEMTIME now;
GetSystemTime(&now);
ULONGLONG ONE_MINUTE = 60 * 10000000;
ULONGLONG nowNumeric = convertTime(now);
ULONGLONG desiredTime = ((ULONGLONG)(nowNumeric / ONE_MINUTE)) * ONE_MINUTE + ONE_MINUTE;
return desiredTime;
}
int main(int argc, char* argv[]) {
ULONGLONG startTimeForTimer = getNextMinute();
HANDLE hTimer = NULL;
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
if (NULL == hTimer) {
printf("CreateWaitableTimer failed (%d)\n", GetLastError());
return 1;
}
printf("Waiting for the next minute to start...\n");
// Set a timer to wait for 5 seconds.
if (!SetWaitableTimer(hTimer, &startTimeForTimer, 5000, NULL, NULL, 0))
{
printf("SetWaitableTimer failed (%d)\n", GetLastError());
return 2;
}
// Wait for the timer.
SYSTEMTIME beforeTime;
SYSTEMTIME afterTime;
GetSystemTime(&beforeTime);
while (WaitForSingleObject(hTimer, INFINITE) == WAIT_OBJECT_0) {
GetSystemTime(&afterTime);
ULONGLONG elapsedTime = convertTime(afterTime) - convertTime(beforeTime);
printf("Timer was signaled: elapsed=%I64u, seconds=%02d.%02d\n", elapsedTime, afterTime.wSecond, afterTime.wMilliseconds);
GetSystemTime(&beforeTime);
}
return 0;
}
这是运行一段时间后的结果(删除了一些无趣的位)。 seconds= 位是当前分钟后的秒数(精确到千分之一秒):
Timer was signaled: elapsed=297650000, seconds=59.98
Timer was signaled: elapsed=50000000, seconds=04.986
Timer was signaled: elapsed=50000000, seconds=09.986
Timer was signaled: elapsed=50000000, seconds=14.986
Timer was signaled: elapsed=50000000, seconds=19.986
...
Timer was signaled: elapsed=50000000, seconds=09.986
Timer was signaled: elapsed=49990000, seconds=14.985
Timer was signaled: elapsed=50000000, seconds=19.985
...
Timer was signaled: elapsed=50000000, seconds=24.985
Timer was signaled: elapsed=49990000, seconds=29.984
...
Timer was signaled: elapsed=50000000, seconds=54.973
Timer was signaled: elapsed=50000000, seconds=59.973
Timer was signaled: elapsed=50000000, seconds=04.973
Timer was signaled: elapsed=49990000, seconds=09.972
Timer was signaled: elapsed=50000000, seconds=14.972
Timer was signaled: elapsed=50000000, seconds=19.972
Timer was signaled: elapsed=50000000, seconds=24.972
Timer was signaled: elapsed=50020000, seconds=29.974
Timer was signaled: elapsed=50020000, seconds=34.976
Timer was signaled: elapsed=50020000, seconds=39.978
Timer was signaled: elapsed=50020000, seconds=44.980
Timer was signaled: elapsed=50020000, seconds=49.982
Timer was signaled: elapsed=50020000, seconds=54.984
Timer was signaled: elapsed=50010000, seconds=59.985
Timer was signaled: elapsed=50020000, seconds=04.987
Timer was signaled: elapsed=50020000, seconds=09.989
Timer was signaled: elapsed=50020000, seconds=14.991
Timer was signaled: elapsed=50020000, seconds=19.993
Timer was signaled: elapsed=50020000, seconds=24.995
Timer was signaled: elapsed=50020000, seconds=29.997
Timer was signaled: elapsed=50020000, seconds=34.999
Timer was signaled: elapsed=50020000, seconds=40.01
Timer was signaled: elapsed=50020000, seconds=45.03
Timer was signaled: elapsed=50020000, seconds=50.05
Timer was signaled: elapsed=50020000, seconds=55.07
Timer was signaled: elapsed=50020000, seconds=00.09
Timer was signaled: elapsed=50010000, seconds=05.10
Timer was signaled: elapsed=50020000, seconds=10.12
Timer was signaled: elapsed=50020000, seconds=15.14
Timer was signaled: elapsed=50020000, seconds=20.16
Timer was signaled: elapsed=50020000, seconds=25.18
Timer was signaled: elapsed=50020000, seconds=30.20
Timer was signaled: elapsed=50020000, seconds=35.22
Timer was signaled: elapsed=50020000, seconds=40.24
Timer was signaled: elapsed=50020000, seconds=45.26
Timer was signaled: elapsed=50020000, seconds=50.28
Timer was signaled: elapsed=50020000, seconds=55.30
Timer was signaled: elapsed=50020000, seconds=00.32
Timer was signaled: elapsed=50010000, seconds=05.33
Timer was signaled: elapsed=50020000, seconds=10.35
Timer was signaled: elapsed=50020000, seconds=15.37
Timer was signaled: elapsed=50020000, seconds=20.39
Timer was signaled: elapsed=50020000, seconds=25.41
Timer was signaled: elapsed=50020000, seconds=30.43
Timer was signaled: elapsed=50020000, seconds=35.45
Timer was signaled: elapsed=50020000, seconds=40.47
Timer was signaled: elapsed=50020000, seconds=45.49
Timer was signaled: elapsed=50020000, seconds=50.51
Timer was signaled: elapsed=50020000, seconds=55.53
Timer was signaled: elapsed=50170000, seconds=00.70
Timer was signaled: elapsed=49870000, seconds=05.57
Timer was signaled: elapsed=50010000, seconds=10.58
Timer was signaled: elapsed=50020000, seconds=15.60
Timer was signaled: elapsed=50020000, seconds=20.62
Timer was signaled: elapsed=50020000, seconds=25.64
Timer was signaled: elapsed=50020000, seconds=30.66
Timer was signaled: elapsed=50020000, seconds=35.68
Timer was signaled: elapsed=50020000, seconds=40.70
Timer was signaled: elapsed=50020000, seconds=45.72
Timer was signaled: elapsed=50020000, seconds=50.74
Timer was signaled: elapsed=50020000, seconds=55.76
Timer was signaled: elapsed=50020000, seconds=00.78
Timer was signaled: elapsed=50020000, seconds=05.80
Timer was signaled: elapsed=50010000, seconds=10.81
Timer was signaled: elapsed=50020000, seconds=15.83
Timer was signaled: elapsed=50020000, seconds=20.85
Timer was signaled: elapsed=50020000, seconds=25.87
Timer was signaled: elapsed=50010000, seconds=30.88
Timer was signaled: elapsed=50010000, seconds=35.89
Timer was signaled: elapsed=50000000, seconds=40.89
Timer was signaled: elapsed=50010000, seconds=45.90
Timer was signaled: elapsed=50010000, seconds=50.91
Timer was signaled: elapsed=50000000, seconds=55.91
Timer was signaled: elapsed=50010000, seconds=00.92
Timer was signaled: elapsed=50010000, seconds=05.93
Timer was signaled: elapsed=50000000, seconds=10.93
Timer was signaled: elapsed=50010000, seconds=15.94
Timer was signaled: elapsed=50010000, seconds=20.95
Timer was signaled: elapsed=50000000, seconds=25.95
Timer was signaled: elapsed=50010000, seconds=30.96
Timer was signaled: elapsed=50010000, seconds=35.97
Timer was signaled: elapsed=50000000, seconds=40.97
Timer was signaled: elapsed=50010000, seconds=45.98
Timer was signaled: elapsed=50010000, seconds=50.99
Timer was signaled: elapsed=50000000, seconds=55.99
Timer was signaled: elapsed=50010000, seconds=00.100
Timer was signaled: elapsed=50010000, seconds=05.101
Timer was signaled: elapsed=50000000, seconds=10.101
Timer was signaled: elapsed=50010000, seconds=15.102
Timer was signaled: elapsed=50010000, seconds=20.103
Timer was signaled: elapsed=50010000, seconds=25.104
Timer was signaled: elapsed=50000000, seconds=30.104
Timer was signaled: elapsed=50010000, seconds=35.105
Timer was signaled: elapsed=50010000, seconds=40.106
Timer was signaled: elapsed=50000000, seconds=45.106
Timer was signaled: elapsed=50010000, seconds=50.107
Timer was signaled: elapsed=50010000, seconds=55.108
Timer was signaled: elapsed=50000000, seconds=00.108
Timer was signaled: elapsed=50010000, seconds=05.109
Timer was signaled: elapsed=50010000, seconds=10.110
Timer was signaled: elapsed=50000000, seconds=15.110
Timer was signaled: elapsed=50010000, seconds=20.111
Timer was signaled: elapsed=50010000, seconds=25.112
Timer was signaled: elapsed=50000000, seconds=30.112
Timer was signaled: elapsed=50010000, seconds=35.113
Timer was signaled: elapsed=50010000, seconds=40.114
Timer was signaled: elapsed=50000000, seconds=45.114
Timer was signaled: elapsed=50010000, seconds=50.115
Timer was signaled: elapsed=50010000, seconds=55.116
Timer was signaled: elapsed=50000000, seconds=00.116
Timer was signaled: elapsed=50010000, seconds=05.117
Timer was signaled: elapsed=50010000, seconds=10.118
Timer was signaled: elapsed=50000000, seconds=15.118
Timer was signaled: elapsed=50010000, seconds=20.119
Timer was signaled: elapsed=50010000, seconds=25.120
Timer was signaled: elapsed=50000000, seconds=30.120
Timer was signaled: elapsed=50010000, seconds=35.121
Timer was signaled: elapsed=50010000, seconds=40.122
Timer was signaled: elapsed=50000000, seconds=45.122
Timer was signaled: elapsed=50010000, seconds=50.123
Timer was signaled: elapsed=50010000, seconds=55.124
Timer was signaled: elapsed=50000000, seconds=00.124
Timer was signaled: elapsed=50010000, seconds=05.125
Timer was signaled: elapsed=50010000, seconds=10.126
Timer was signaled: elapsed=50000000, seconds=15.126
Timer was signaled: elapsed=50010000, seconds=20.127
Timer was signaled: elapsed=50010000, seconds=25.128
Timer was signaled: elapsed=50000000, seconds=30.128
Timer was signaled: elapsed=50000000, seconds=35.128
Timer was signaled: elapsed=50000000, seconds=40.128
Timer was signaled: elapsed=50010000, seconds=45.129
Timer was signaled: elapsed=50000000, seconds=50.129
Timer was signaled: elapsed=50000000, seconds=55.129
Timer was signaled: elapsed=50000000, seconds=00.129
Timer was signaled: elapsed=50000000, seconds=05.129
Timer was signaled: elapsed=50000000, seconds=10.129
Timer was signaled: elapsed=50010000, seconds=15.130
Timer was signaled: elapsed=50000000, seconds=20.130
Timer was signaled: elapsed=50000000, seconds=25.130
Timer was signaled: elapsed=50000000, seconds=30.130
Timer was signaled: elapsed=50000000, seconds=35.130
Timer was signaled: elapsed=50010000, seconds=40.131
Timer was signaled: elapsed=50000000, seconds=45.131
Timer was signaled: elapsed=50000000, seconds=50.131
Timer was signaled: elapsed=50000000, seconds=55.131
Timer was signaled: elapsed=50000000, seconds=00.131
Timer was signaled: elapsed=50010000, seconds=05.132
Timer was signaled: elapsed=50000000, seconds=10.132
Timer was signaled: elapsed=50000000, seconds=15.132
Timer was signaled: elapsed=50000000, seconds=20.132
Timer was signaled: elapsed=50000000, seconds=25.132
Timer was signaled: elapsed=50010000, seconds=30.133
Timer was signaled: elapsed=50000000, seconds=35.133
Timer was signaled: elapsed=50000000, seconds=40.133
Timer was signaled: elapsed=50000000, seconds=45.133
Timer was signaled: elapsed=50000000, seconds=50.133
Timer was signaled: elapsed=50010000, seconds=55.134
Timer was signaled: elapsed=50000000, seconds=00.134
Timer was signaled: elapsed=50000000, seconds=05.134
Timer was signaled: elapsed=50000000, seconds=10.134
Timer was signaled: elapsed=50000000, seconds=15.134
Timer was signaled: elapsed=50000000, seconds=20.134
Timer was signaled: elapsed=50010000, seconds=25.135
Timer was signaled: elapsed=50000000, seconds=30.135
Timer was signaled: elapsed=50000000, seconds=35.135
Timer was signaled: elapsed=50000000, seconds=40.135
Timer was signaled: elapsed=50000000, seconds=45.135
Timer was signaled: elapsed=50010000, seconds=50.136
Timer was signaled: elapsed=50000000, seconds=55.136
Timer was signaled: elapsed=50000000, seconds=00.136
Timer was signaled: elapsed=50000000, seconds=05.136
Timer was signaled: elapsed=50000000, seconds=10.136
Timer was signaled: elapsed=50010000, seconds=15.137
Timer was signaled: elapsed=50000000, seconds=20.137
Timer was signaled: elapsed=50000000, seconds=25.137
Timer was signaled: elapsed=50000000, seconds=30.137
Timer was signaled: elapsed=50000000, seconds=35.137
Timer was signaled: elapsed=50010000, seconds=40.138
Timer was signaled: elapsed=50000000, seconds=45.138
Timer was signaled: elapsed=50000000, seconds=50.138
Timer was signaled: elapsed=50000000, seconds=55.138
Timer was signaled: elapsed=50000000, seconds=00.138
Timer was signaled: elapsed=50010000, seconds=05.139
Timer was signaled: elapsed=50000000, seconds=10.139
Timer was signaled: elapsed=50000000, seconds=15.139
Timer was signaled: elapsed=50000000, seconds=20.139
Timer was signaled: elapsed=50000000, seconds=25.139
Timer was signaled: elapsed=50000000, seconds=30.139
Timer was signaled: elapsed=50000000, seconds=35.139
Timer was signaled: elapsed=50000000, seconds=40.139
Timer was signaled: elapsed=50000000, seconds=45.139
Timer was signaled: elapsed=50000000, seconds=50.139
Timer was signaled: elapsed=50000000, seconds=55.139
Timer was signaled: elapsed=50010000, seconds=00.140
Timer was signaled: elapsed=50000000, seconds=05.140
Timer was signaled: elapsed=50000000, seconds=10.140
Timer was signaled: elapsed=50000000, seconds=15.140
Timer was signaled: elapsed=50000000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50000000, seconds=35.140
Timer was signaled: elapsed=50000000, seconds=40.140
Timer was signaled: elapsed=50000000, seconds=45.140
Timer was signaled: elapsed=50000000, seconds=50.140
Timer was signaled: elapsed=50000000, seconds=55.140
Timer was signaled: elapsed=50000000, seconds=00.140
Timer was signaled: elapsed=50000000, seconds=05.140
Timer was signaled: elapsed=50000000, seconds=10.140
Timer was signaled: elapsed=50000000, seconds=15.140
Timer was signaled: elapsed=50000000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50000000, seconds=35.140
Timer was signaled: elapsed=50000000, seconds=40.140
Timer was signaled: elapsed=50000000, seconds=45.140
Timer was signaled: elapsed=50000000, seconds=50.140
Timer was signaled: elapsed=50000000, seconds=55.140
Timer was signaled: elapsed=50000000, seconds=00.140
Timer was signaled: elapsed=50000000, seconds=05.140
Timer was signaled: elapsed=50000000, seconds=10.140
Timer was signaled: elapsed=50000000, seconds=15.140
Timer was signaled: elapsed=50000000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50010000, seconds=35.141
Timer was signaled: elapsed=50000000, seconds=40.141
Timer was signaled: elapsed=50000000, seconds=45.141
Timer was signaled: elapsed=50000000, seconds=50.141
Timer was signaled: elapsed=50000000, seconds=55.141
Timer was signaled: elapsed=50000000, seconds=00.141
Timer was signaled: elapsed=50000000, seconds=05.141
Timer was signaled: elapsed=50000000, seconds=10.141
Timer was signaled: elapsed=50000000, seconds=15.141
Timer was signaled: elapsed=50000000, seconds=20.141
Timer was signaled: elapsed=50000000, seconds=25.141
Timer was signaled: elapsed=50000000, seconds=30.141
Timer was signaled: elapsed=50000000, seconds=35.141
Timer was signaled: elapsed=50000000, seconds=40.141
Timer was signaled: elapsed=50000000, seconds=45.141
Timer was signaled: elapsed=50000000, seconds=50.141
Timer was signaled: elapsed=50000000, seconds=55.141
Timer was signaled: elapsed=50000000, seconds=00.141
Timer was signaled: elapsed=50000000, seconds=05.141
Timer was signaled: elapsed=50000000, seconds=10.141
Timer was signaled: elapsed=50000000, seconds=15.141
Timer was signaled: elapsed=50000000, seconds=20.141
Timer was signaled: elapsed=50000000, seconds=25.141
Timer was signaled: elapsed=50000000, seconds=30.141
Timer was signaled: elapsed=50000000, seconds=35.141
Timer was signaled: elapsed=50000000, seconds=40.141
Timer was signaled: elapsed=50000000, seconds=45.141
Timer was signaled: elapsed=50000000, seconds=50.141
Timer was signaled: elapsed=50000000, seconds=55.141
Timer was signaled: elapsed=50000000, seconds=00.141
Timer was signaled: elapsed=50000000, seconds=05.141
Timer was signaled: elapsed=50000000, seconds=10.141
Timer was signaled: elapsed=50000000, seconds=15.141
Timer was signaled: elapsed=50000000, seconds=20.141
Timer was signaled: elapsed=50000000, seconds=25.141
Timer was signaled: elapsed=50000000, seconds=30.141
Timer was signaled: elapsed=50000000, seconds=35.141
Timer was signaled: elapsed=50000000, seconds=40.141
Timer was signaled: elapsed=50000000, seconds=45.141
Timer was signaled: elapsed=50000000, seconds=50.141
Timer was signaled: elapsed=50000000, seconds=55.141
Timer was signaled: elapsed=50000000, seconds=00.141
Timer was signaled: elapsed=50000000, seconds=05.141
Timer was signaled: elapsed=50000000, seconds=10.141
Timer was signaled: elapsed=50000000, seconds=15.141
Timer was signaled: elapsed=49990000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50000000, seconds=35.140
Timer was signaled: elapsed=50000000, seconds=40.140
Timer was signaled: elapsed=50000000, seconds=45.140
Timer was signaled: elapsed=50000000, seconds=50.140
Timer was signaled: elapsed=50000000, seconds=55.140
Timer was signaled: elapsed=50000000, seconds=00.140
Timer was signaled: elapsed=50000000, seconds=05.140
Timer was signaled: elapsed=50000000, seconds=10.140
Timer was signaled: elapsed=50000000, seconds=15.140
Timer was signaled: elapsed=50000000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50000000, seconds=35.140
Timer was signaled: elapsed=50000000, seconds=40.140
Timer was signaled: elapsed=50000000, seconds=45.140
Timer was signaled: elapsed=50000000, seconds=50.140
Timer was signaled: elapsed=50000000, seconds=55.140
Timer was signaled: elapsed=50000000, seconds=00.140
Timer was signaled: elapsed=50000000, seconds=05.140
Timer was signaled: elapsed=50000000, seconds=10.140
Timer was signaled: elapsed=50000000, seconds=15.140
Timer was signaled: elapsed=50000000, seconds=20.140
Timer was signaled: elapsed=50000000, seconds=25.140
Timer was signaled: elapsed=50000000, seconds=30.140
Timer was signaled: elapsed=50000000, seconds=35.140
Timer was signaled: elapsed=50000000, seconds=40.140
Timer was signaled: elapsed=50000000, seconds=45.140
Timer was signaled: elapsed=50000000, seconds=50.140
Timer was signaled: elapsed=49990000, seconds=55.139
Timer was signaled: elapsed=50000000, seconds=00.139
Timer was signaled: elapsed=50000000, seconds=05.139
Timer was signaled: elapsed=50000000, seconds=10.139
Timer was signaled: elapsed=50000000, seconds=15.139
Timer was signaled: elapsed=50000000, seconds=20.139
Timer was signaled: elapsed=50000000, seconds=25.139
Timer was signaled: elapsed=50000000, seconds=30.139
Timer was signaled: elapsed=50000000, seconds=35.139
Timer was signaled: elapsed=50000000, seconds=40.139
Timer was signaled: elapsed=50000000, seconds=45.139
Timer was signaled: elapsed=50000000, seconds=50.139
Timer was signaled: elapsed=50000000, seconds=55.139
Timer was signaled: elapsed=50000000, seconds=00.139
Timer was signaled: elapsed=50000000, seconds=05.139
Timer was signaled: elapsed=50000000, seconds=10.139
Timer was signaled: elapsed=50000000, seconds=15.139
Timer was signaled: elapsed=50000000, seconds=20.139
Timer was signaled: elapsed=50000000, seconds=25.139
Timer was signaled: elapsed=49990000, seconds=30.138
Timer was signaled: elapsed=50000000, seconds=35.138
Timer was signaled: elapsed=50000000, seconds=40.138
Timer was signaled: elapsed=50000000, seconds=45.138
Timer was signaled: elapsed=50000000, seconds=50.138
Timer was signaled: elapsed=50000000, seconds=55.138
Timer was signaled: elapsed=50000000, seconds=00.138
Timer was signaled: elapsed=50000000, seconds=05.138
Timer was signaled: elapsed=50000000, seconds=10.138
Timer was signaled: elapsed=50000000, seconds=15.138
Timer was signaled: elapsed=50000000, seconds=20.138
Timer was signaled: elapsed=50000000, seconds=25.138
Timer was signaled: elapsed=50000000, seconds=30.138
Timer was signaled: elapsed=50000000, seconds=35.138
Timer was signaled: elapsed=50000000, seconds=40.138
Timer was signaled: elapsed=50000000, seconds=45.138
Timer was signaled: elapsed=49990000, seconds=50.137
Timer was signaled: elapsed=50000000, seconds=55.137
Timer was signaled: elapsed=50000000, seconds=00.137
Timer was signaled: elapsed=50000000, seconds=05.137
Timer was signaled: elapsed=50000000, seconds=10.137
Timer was signaled: elapsed=50000000, seconds=15.137
Timer was signaled: elapsed=50000000, seconds=20.137
Timer was signaled: elapsed=50000000, seconds=25.137
Timer was signaled: elapsed=50000000, seconds=30.137
Timer was signaled: elapsed=50000000, seconds=35.137
Timer was signaled: elapsed=50000000, seconds=40.137
Timer was signaled: elapsed=50000000, seconds=45.137
Timer was signaled: elapsed=50000000, seconds=50.137
Timer was signaled: elapsed=50000000, seconds=55.137
Timer was signaled: elapsed=50000000, seconds=00.137
Timer was signaled: elapsed=49990000, seconds=05.136
Timer was signaled: elapsed=50000000, seconds=10.136
Timer was signaled: elapsed=50000000, seconds=15.136
Timer was signaled: elapsed=50000000, seconds=20.136
Timer was signaled: elapsed=50000000, seconds=25.136
Timer was signaled: elapsed=50000000, seconds=30.136
Timer was signaled: elapsed=50000000, seconds=35.136
Timer was signaled: elapsed=50000000, seconds=40.136
Timer was signaled: elapsed=50000000, seconds=45.136
Timer was signaled: elapsed=50000000, seconds=50.136
Timer was signaled: elapsed=50000000, seconds=55.136
Timer was signaled: elapsed=50000000, seconds=00.136
Timer was signaled: elapsed=50000000, seconds=05.136
Timer was signaled: elapsed=50000000, seconds=10.136
Timer was signaled: elapsed=50000000, seconds=15.136
Timer was signaled: elapsed=50000000, seconds=20.136
Timer was signaled: elapsed=49990000, seconds=25.135
Timer was signaled: elapsed=50000000, seconds=30.135
Timer was signaled: elapsed=50000000, seconds=35.135
Timer was signaled: elapsed=50000000, seconds=40.135
Timer was signaled: elapsed=50000000, seconds=45.135
Timer was signaled: elapsed=50000000, seconds=50.135
Timer was signaled: elapsed=50000000, seconds=55.135
Timer was signaled: elapsed=50000000, seconds=00.135
Timer was signaled: elapsed=50000000, seconds=05.135
Timer was signaled: elapsed=50000000, seconds=10.135
Timer was signaled: elapsed=50000000, seconds=15.135
Timer was signaled: elapsed=50000000, seconds=20.135
Timer was signaled: elapsed=50000000, seconds=25.135
Timer was signaled: elapsed=50000000, seconds=30.135
Timer was signaled: elapsed=50000000, seconds=35.135
Timer was signaled: elapsed=50000000, seconds=40.135
Timer was signaled: elapsed=49990000, seconds=45.134
Timer was signaled: elapsed=50000000, seconds=50.134
Timer was signaled: elapsed=50000000, seconds=55.134
Timer was signaled: elapsed=50000000, seconds=00.134
Timer was signaled: elapsed=50000000, seconds=05.134
Timer was signaled: elapsed=50000000, seconds=10.134
Timer was signaled: elapsed=50000000, seconds=15.134
Timer was signaled: elapsed=50000000, seconds=20.134
Timer was signaled: elapsed=50000000, seconds=25.134
Timer was signaled: elapsed=50000000, seconds=30.134
Timer was signaled: elapsed=50000000, seconds=35.134
Timer was signaled: elapsed=50000000, seconds=40.134
Timer was signaled: elapsed=50000000, seconds=45.134
Timer was signaled: elapsed=50000000, seconds=50.134
Timer was signaled: elapsed=50000000, seconds=55.134
Timer was signaled: elapsed=49990000, seconds=00.133
Timer was signaled: elapsed=50000000, seconds=05.133
Timer was signaled: elapsed=50000000, seconds=10.133
Timer was signaled: elapsed=50000000, seconds=15.133
Timer was signaled: elapsed=50000000, seconds=20.133
Timer was signaled: elapsed=50000000, seconds=25.133
Timer was signaled: elapsed=50000000, seconds=30.133
Timer was signaled: elapsed=50000000, seconds=35.133
Timer was signaled: elapsed=50000000, seconds=40.133
Timer was signaled: elapsed=50000000, seconds=45.133
Timer was signaled: elapsed=50000000, seconds=50.133
Timer was signaled: elapsed=50000000, seconds=55.133
Timer was signaled: elapsed=50000000, seconds=00.133
Timer was signaled: elapsed=50000000, seconds=05.133
Timer was signaled: elapsed=50000000, seconds=10.133
Timer was signaled: elapsed=50000000, seconds=15.133
Timer was signaled: elapsed=49990000, seconds=20.132
Timer was signaled: elapsed=50000000, seconds=25.132
Timer was signaled: elapsed=50000000, seconds=30.132
Timer was signaled: elapsed=50000000, seconds=35.132
Timer was signaled: elapsed=50000000, seconds=40.132
Timer was signaled: elapsed=50000000, seconds=45.132
Timer was signaled: elapsed=50000000, seconds=50.132
Timer was signaled: elapsed=50000000, seconds=55.132
Timer was signaled: elapsed=50000000, seconds=00.132
Timer was signaled: elapsed=50000000, seconds=05.132
Timer was signaled: elapsed=50000000, seconds=10.132
Timer was signaled: elapsed=50000000, seconds=15.132
Timer was signaled: elapsed=50000000, seconds=20.132
Timer was signaled: elapsed=50000000, seconds=25.132
Timer was signaled: elapsed=50000000, seconds=30.132
Timer was signaled: elapsed=49990000, seconds=35.131
Timer was signaled: elapsed=50000000, seconds=40.131
Timer was signaled: elapsed=50000000, seconds=45.131
Timer was signaled: elapsed=50000000, seconds=50.131
Timer was signaled: elapsed=50000000, seconds=55.131
Timer was signaled: elapsed=50000000, seconds=00.131
总结:实际上我不知道如何理解这些结果。 看起来 Windows 正在尝试主动纠正计时器中的任何漂移,以便每次唤醒都在“适当”的时间发生。如果是这种情况,那么这(为您想要的间隔设置一个计时器)绝对是完成您想要的事情的最简单方法。
关于c++ - 每 N 秒执行一次与 Windows 系统时钟同步的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6785524/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul
我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注