我做过这样的事情:
#include <thread>
int main(int argc, char *argv[])
{
//...
std::thread sad_thread(MakeMeFeelSad(), params);
sad_thread.join();
//...
std::thread happy_thread(MakeMeFeelHappy(), params);
happy_thread.join();
//...
}
函数MakeMeFeelSad
和MakeMeFeelHappy
每个运行大约2分钟,我需要在cmd中做这样的事情:我变得悲伤/快乐..... < / em>(当函数正在运行时) - 点总是出现在5,然后它们消失,然后再次出现。它就像带有圆点的进度条。我该怎么做?
ETA:我的意思是我需要另一个带回调的线程吗?
答案 0 :(得分:3)
您可以使用以下内容:
std::future<void> fut = std::async(std::launch::async, MakeMeFeelSad, params);
std::cout << "I'm getting Sad";
std::chrono::milliseconds span (100);
while (fut.wait_for(span) == std::future_status::timeout)
std::cout << '.';
答案 1 :(得分:1)
您确实可以创建另一个thread
,但也可以使用condition_variable
对象,并循环使用wait_until
方法。您将能够在此循环中显示您的点。