我最近偶然发现了this 链接,而我只是尝试了一下,但它没有按预期工作。
使用以下代码:
#include <atomic>
#include <thread>
#include <iostream>
void ReadCin(std::atomic<bool>& run)
{
std::string buffer;
while (run.load())
{
std::cin >> buffer;
if (buffer == "q")
{
run.store(false);
}
}
}
int main()
{
std::atomic<bool> run(true);
std::thread cinThread(ReadCin, std::ref(run));
while (run.load())
{
// some lengthy operation
}
run.store(false);
cinThread.join();
return 0;
}
在主While循环中,我有一个类的对象正在执行一些冗长的操作,我试图用用户发出的字母“ q”来停止该操作。当我键入“ q”时,我看到“ run.store(false);”。点击ReadCin方法,但这并没有使我脱离主while循环。我在做什么错了?