gpt4 book ai didi

c++ - 如何在 Windows 中用 C++ 创建定时器

转载 作者:行者123 更新时间:2023-11-30 04:17:22 25 4
gpt4 key购买 nike

是否可以通过 SetTimer 或 C++ 在 Windows 中创建计时器一些其他函数,其中回调函数将是类成员函数

最佳答案

是的。

创建非静态类方法的定时回调的最简单方法是使用 lambda 捕获。这个例子是纯 C++ (C++11)。它适用于例如 Visual Studio 2012(添加了“CTP November 2012”)或 gcc 4.7.2 或更高版本。

请注意,您需要尊重多线程编程的困难,因为回调是在“另一个”线程上到达的。我强烈建议阅读 Anthony Williams 着的 C++ Concurrency in Action:Practical Multithreading 一书。

#include <future>
#include <iostream>
#include <chrono>
#include <thread>
#include <atomic>

class C {
std::atomic<int> i;
public:
C(int ini) :i(ini) {}
int get_value() const {
return i;
}
void set_value(int ini){
i=ini;
}
};

int main(){
C c(75);
auto timer=std::async(std::launch::async,[&c](){
std::this_thread::sleep_for(std::chrono::milliseconds(1000) );
std::cout << "value: "<< c.get_value()<<std::endl;
});

std::cout << "value original: " << c.get_value() <<std::endl;

c.set_value(5);
// do anything here:

// wait for the timeout
timer.wait();
}

关于c++ - 如何在 Windows 中用 C++ 创建定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com