C ++控制台应用程序异步接受用户输入

时间:2019-03-21 22:06:34

标签: multithreading c++11

我最近偶然发现了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循环。我在做什么错了?

0 个答案:

没有答案