将GetTickCount用于"循环"

时间:2016-07-07 18:14:34

标签: c

嗨当我的应用程序启动时,我加载一个函数 - 调用一个名为CreateFileNow()的函数{}

我想制作一个循环,但我不知道如何。我想每15秒写一次数据。所以我在应用程序启动时调用该函数,将数据写入文件,而不是等待15秒,然后再将数据写入文件。

FILE* file;

    if (fopen_s(&file, "Accesslog.txt", "w") != 0)
    {
        return;
    }

    fprintf(file, "Test");

    fclose(file);

如何制作一个每15秒运行一次代码部分的循环? 我不想使用While和Sleep,有人可以帮助使用GetTickcount();?

2 个答案:

答案 0 :(得分:0)

使用fopen_s我假设你正在使用Visual Studio。所以你可以使用Sleep函数:

while(/* some condition */) {
    Sleep(15000);
    fprintf(file, "Test");
}

答案 1 :(得分:0)

创建一个单独的thread,为您计时。该主题不会干扰您的主程序。全局变量每15秒更新一次,并触发main thread将值更新为文件。

#include <pthread.h>

int update_file = 0;

void *time_thread(void *arg)
{
    while (1) {
    sleep(15);
    update_file = 1;
    }
}
int main(void)
{
    pthread_t tid;
    pthread_create(&tid, NULL, &time_thread, NULL);
    while (1) {
    while (update_file == 0);
    FILE *file;
        if (fopen_s(&file, "Accesslog.txt", "w") != 0) {
            return;
        }
    fprintf(file, "Test");
    fclose(file);
    update_file = 0;
    }
    return 0;
}