У меня есть функция в C++, которая должна быть вызвана через некоторое время, и эта задача повторяется. Знаете ли вы какую-либо встроенную функцию или образец кода в Win32 или pthread?Функция Win32 для запланированных задач в C++
Спасибо,
Джулиан
У меня есть функция в C++, которая должна быть вызвана через некоторое время, и эта задача повторяется. Знаете ли вы какую-либо встроенную функцию или образец кода в Win32 или pthread?Функция Win32 для запланированных задач в C++
Спасибо,
Джулиан
Как насчет SetTimer.
Как примечание, я надеюсь, что вы не делаете что-то в коде, которое может быть выполнено через ОС. (Я не знаю достаточно о ваших требованиях, чтобы сказать, но я думал, что хочу указать на это).
Такие задачи, как планировщик задач (окна), предназначены для планирования повторяющихся задач, и они часто выполняют лучшую работу, чем ручные решения.
SetTimer!
Пример:
#include <windows.h>
#include <stdio.h>
void CALLBACK scheduled_task_1 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_1 every half-second event");
}
void CALLBACK scheduled_task_2 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_2 every two seconds event");
}
void CALLBACK scheduled_task_3 (HWND hwnd, UINT msg, UINT id, DWORD time)
{
puts("Executing scheduled_task_3 24 hours event");
}
void messageLoop(void) {
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) > 0)
DispatchMessage(&msg);
}
int main(void)
{
while(true)
{
SetTimer (NULL, 0, 500, scheduled_task_1); /* every half-second */
SetTimer (NULL, 0, 2000, scheduled_task_2); /* every two seconds */
SetTimer (NULL, 0, 60*60*24*1000, scheduled_task_3); /* after 24 hours or 86400000 milliseconds */
messageLoop();
}
return 0;
}
Как я могу выполнить обратный вызов и передавать значения обратного вызова? Пример: void CALLBACK schedule_task_1 (HWND hwnd, UINT msg, UINT id, DWORD time, int my_number) {..}; ? – programmer