condition-variable

    5热度

    1回答

    我进去看了VC++实现的std::condition_variable(lock,pred),基本上,它看起来像这样: template<class _Predicate> void wait(unique_lock<mutex>& _Lck, _Predicate _Pred) { // wait for signal and test predicate w

    3热度

    1回答

    在我们的Android应用程序中,我们有UI组件和核心C++ 11模块。线程是基于运行在std::chrono::system_clock::time_point,如下面: while(this->m_ConditionVariable.wait_until(lock, this->m_Object.to_time_point()) == std::cv_status::no_time

    2热度

    1回答

    请考虑使用pthread的基本多线程程序。 我们有一个主线程,创建另一个线程来完成一些工作。 bool done = false; mutex m; condition c; void foo() { pthread_mutex_lock(&m); //while(!done) { pthread_cond_wait(&c, &m); // Sp

    4热度

    3回答

    我正试图在循环中等待waitpid()和read()。具体来说,我正在等待这两个事件中的任何一个,然后在循环的每次迭代中处理它。目前,我有以下实现(这不是我想要的)。 while (true) { pid_t pid = waitpid(...); process_waitpid_event(...); ssize_t sz = read(socket, ....)

    0热度

    1回答

    我想创建一个线程,通过条件变量得到通知来执行一些代码。我跳上线程类成员函数是这样的: m_dbSaver = std::thread(std::bind(&ContactLearningApp::DBWorkerThread, this)); m_lk = std::unique_lock<std::mutex>(m_mutex); m_Processed = true; 每隔半秒钟,我尝

    2热度

    3回答

    我正在使用std::condition_variable与此类std::unique_lock相结合。 std::mutex a_mutex; std::condition_variable a_condition_variable; std::unique_lock<std::mutex> a_lock(a_mutex); a_condition_variable.wait(a_lock,

    3热度

    2回答

    我想写一个包装std :: thread的类,它的行为像std :: thread,但每次我需要处理某些异步时都没有实际分配一个线程。原因是我需要在不允许动态分配的上下文中使用多线程,而且我也不想要创建std :: thread的开销。 取而代之,我想要一个线程在循环中运行并等待它可以开始处理。客户呼叫invoke唤醒线程。线程锁定一个互斥锁,它是否正在处理并再次入睡。函数join的行为类似于st

    0热度

    2回答

    我有点卡住了这个问题,所以这是我的呼救声。 我有一个管理器将某些事件推送到队列中,这是在另一个线程中进行的。 我不希望此线程在队列中的事件“忙于等待”,因为它可能一直为空(以及它可能始终为满)。 另外,我需要m_bShutdownFlag来在需要时停止线程。 所以我想尝试一下condition_variable这种情况:如果有东西被推到队列中,那么线程就开始工作。 简化代码: class Some

    1热度

    2回答

    Accoding到cppreference.com之前修改共享的“原子”变量: 是打算修改变量有 获得线程std :: mutex(通常通过std :: lock_guard) 执行修改,同时锁定被锁定 对std :: condition_variable执行notify_one或notify_all(锁定不需要举行通知) 即使共享变量是原子的,它必须在互斥量下修改才能正确地将修改发布到等待线程。

    0热度

    1回答

    我正在测试如何推送队列中condition_variables等待的对象。我想根据我的意愿执行这些线程,因为它们将在稍后的关键部分中进行讨论。没有什么是从线程打印的,有什么可能是错误的? mutex print_mu; void print(function<void()> func) { lock_guard<mutex> lock(print_mu); func();