相关疑难解决方法(0)

从标准输入中捕获字符,无需等待按下输入

我永远不会记得我是怎么做的,因为它对我来说很少见.但是在C或C++中,从标准输入读取字符而不等待换行符的最佳方法是什么(按回车键).

理想情况下,它也不会将输入字符回显到屏幕上.我只想捕捉击键而不影响控制台屏幕.

c c++ inputstream

163
推荐指数
11
解决办法
19万
查看次数

105
推荐指数
7
解决办法
28万
查看次数

C++中的睡眠功能

是否有一个函数Sleep(time);暂停程序X毫秒,但在C++?

我应该添加哪个标题以及函数的签名是什么?

c++

59
推荐指数
7
解决办法
23万
查看次数

如何正确使用 std::condition_variable?

我对conditions_variables如何使用它们(安全地)感到困惑。在我的应用程序中,我有一个创建 gui 线程的类,但是当 gui 由 gui 线程构建时,主线程需要等待。

情况与下面的函数相同。主线程创建互斥锁、锁和condition_variable. 然后它使线程。虽然这worker thread还没有通过某个点(此处打印数字),但不允许主线程继续(即必须wait打印所有数字)。

condition_variables在这种情况下如何正确使用?另外,我读到自发唤醒是一个问题。我该如何处理它们?

    int main()
    {
        std::mutex mtx;
        std::unique_lock<std::mutex> lck(mtx);
        std::condition_variable convar;

        auto worker = std::thread([&]{
            /* Do some work. Main-thread can not continue. */
            for(int i=0; i<100; ++i) std::cout<<i<<" ";
            convar.notify_all(); // let main thread continue
            std::cout<<"\nworker done"<<std::endl;       
        });


        // The main thread can do some work but then must wait until the worker has done it's calculations.
        /* do some stuff …
Run Code Online (Sandbox Code Playgroud)

c++ concurrency multithreading condition-variable

2
推荐指数
1
解决办法
1559
查看次数