温馨提示×

如何结合C++ gettickcount与多线程

c++
小樊
85
2024-07-25 01:13:14
栏目: 编程语言

在C++中,可以使用GetTickCount()函数获取当前系统运行时间的毫秒数,然后结合多线程来实现一些并发操作。下面是一个简单的示例代码:

#include <iostream>
#include <windows.h>
#include <thread>

DWORD WINAPI MyThreadFunction(LPVOID lpParam) {
    while (true) {
        DWORD tickCount = GetTickCount();
        std::cout << "Thread ID: " << GetCurrentThreadId() << ", Tick Count: " << tickCount << std::endl;
        Sleep(1000); // 每隔1秒输出一次
    }
    return 0;
}

int main() {
    HANDLE hThread = CreateThread(NULL, 0, MyThreadFunction, NULL, 0, NULL);
    if (hThread == NULL) {
        std::cerr << "Failed to create thread" << std::endl;
        return 1;
    }
    
    while (true) {
        DWORD tickCount = GetTickCount();
        std::cout << "Main Thread, Tick Count: " << tickCount << std::endl;
        Sleep(1000); // 每隔1秒输出一次
    }

    CloseHandle(hThread);
    return 0;
}

在上面的代码中,我们创建了一个新的线程MyThreadFunction,在该线程中不断获取系统运行时间的毫秒数,并输出。同时,主线程也在不断获取系统时间并输出。这样就实现了使用GetTickCount()结合多线程进行并发操作的功能。

需要注意的是,在实际的多线程应用中,要注意线程之间的同步和互斥,以避免出现竞争条件和数据访问冲突的情况。可以使用互斥量、信号量等机制来实现线程间的同步和互斥。

0