控制台有两个任务,定时查询接口数据,当触发键盘按键后,停止查询。
定义两个任务函数,如:
volatile bool RUN = true;
void listenKeyPressed()
{
cout << "开始监听键盘事件" << endl;
while (true)
{
if (_kbhit())
{
cout << "关闭请求运行..." << endl;
RUN = false;
break;
}
}
}
void getStockInfo()
{
while (RUN)
{
string url = "http://xxx";
string response;
auto curlCode = Utils::curlGetRequest(url, response);
if (curlCode == CURLE_OK)
{
cout << response << endl;
}
else
{
cout << "请求失败: " << curlCode << endl;
}
cout << "请求数据时间: " << Utils::getCurrentTimeStr() << endl;
// 定时轮询
this_thread::sleep_for(std::chrono::seconds(5));
//system("cls");
}
}
主函数中开启两个线程
thread run(getStockInfo);
thread key(listenKeyPressed);
run.join();
key.join();
启动程序可以看到,每隔5秒会打印新的查询信息,当有键盘触发按钮后,程序运行结束。