• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ std::condition_variable_any类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中std::condition_variable_any的典型用法代码示例。如果您正苦于以下问题:C++ condition_variable_any类的具体用法?C++ condition_variable_any怎么用?C++ condition_variable_any使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了condition_variable_any类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: f

void f()
{
    typedef std::chrono::system_clock Clock;
    typedef std::chrono::milliseconds milliseconds;
    L1 lk(m0);
    assert(test2 == 0);
    test1 = 1;
    cv.notify_one();
    Clock::time_point t0 = Clock::now();
    while (test2 == 0 &&
           cv.wait_for(lk, milliseconds(250)) == std::cv_status::no_timeout)
        ;
    Clock::time_point t1 = Clock::now();
    if (runs == 0)
    {
        assert(t1 - t0 < milliseconds(250));
        assert(test2 != 0);
    }
    else
    {
        assert(t1 - t0 - milliseconds(250) < milliseconds(5));
        assert(test2 == 0);
    }
    ++runs;
}
开发者ID:Bigcheese,项目名称:libcxx,代码行数:25,代码来源:wait_for.pass.cpp


示例2: main

int main()
{
    {
        L1 lk(m0);
        std::thread t(f);
        assert(test1 == 0);
        while (test1 == 0)
            cv.wait(lk);
        assert(test1 != 0);
        test2 = 1;
        lk.unlock();
        cv.notify_one();
        t.join();
    }
    test1 = 0;
    test2 = 0;
    {
        L1 lk(m0);
        std::thread t(f);
        assert(test1 == 0);
        while (test1 == 0)
            cv.wait(lk);
        assert(test1 != 0);
        lk.unlock();
        t.join();
    }
}
开发者ID:jcarlson23,项目名称:libcxx,代码行数:27,代码来源:wait_until_pred.pass.cpp


示例3: f

void f()
{
    L1 lk(m0);
    assert(test2 == 0);
    test1 = 1;
    cv.notify_one();
    cv.wait(lk, Pred(test2));
    assert(test2 != 0);
}
开发者ID:99corps,项目名称:runtime,代码行数:9,代码来源:wait_pred.pass.cpp


示例4: unlock

		void unlock() {
			if ( --counter == 0 ) {
				cv.notify_all();
			} else { 
				std::unique_lock<sync_object_type>    barrier_lock(sync);
				while(counter != 0)
					cv.wait_for(barrier_lock, std::chrono::milliseconds(1));
			}
		}
开发者ID:SergeyMalashenko,项目名称:OCTree,代码行数:9,代码来源:thread.hpp


示例5: unlock_write

//---------------------------------------------------------------------------
//  function : unlock_write
/// @brief this function unlock the write operation
//---------------------------------------------------------------------------
void unlock_write( void)
{   //-------------------------- begin --------------------
    std::unique_lock <spinlock> UL ( spl);
    assert ( tid == this_id() and nwrite > 0)  ;
    nwrite -- ;
    if ( nwrite == 0 )
    {   cv_write.notify_all() ;
        cv_read.notify_all() ;
    };
};
开发者ID:fjtapia,项目名称:countertree_2.0,代码行数:14,代码来源:mutex_data.hpp


示例6: signals

void signals()
{
    std::this_thread::sleep_for(std::chrono::milliseconds(120));
    std::cerr << "Notifying...\n";
    cv.notify_all();
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
    i = 1;
    std::cerr << "Notifying again...\n";
    cv.notify_all();
}
开发者ID:CCJY,项目名称:coliru,代码行数:10,代码来源:main.cpp


示例7: insert

  void insert(T t) {
    std::unique_lock<M> lock{mutex};

    producers.wait(lock, [this]() { return begin != (end + 1) % SIZE; });

    buffer[end] = t;
    end = (end + 1) % SIZE;

    consumers.notify_all();
  }
开发者ID:Mateuszd6,项目名称:uni-concurrent,代码行数:10,代码来源:producer_consumer_test.cpp


示例8: extract

  T extract() {
    std::unique_lock<M> lock{mutex};

    consumers.wait(lock, [this]() { return begin != end; });

    T t = buffer[begin];
    begin = (begin + 1) % SIZE;

    producers.notify_all();

    return t;
  }
开发者ID:Mateuszd6,项目名称:uni-concurrent,代码行数:12,代码来源:producer_consumer_test.cpp


示例9: _process

    void _process(int id) {
        std::unique_lock<std::mutex> lock(io_datas[id]->mtx);
        if(io_datas[id]->empty()) {
            io_datas[id]->cond.wait(lock);
            /* In case that the queue is not used at the begining and it shall
             * make dequeue operation failed. */
            if(io_datas[id]->empty()) {
                lock.unlock();
                return;
            }
        }

        IoRef io = io_datas[id]->dequeue();
        lock.unlock();

        auto time_beg = std::chrono::steady_clock::now();
        handle_io(io->offset, io->c);
        auto time_end = std::chrono::steady_clock::now();
        auto duration = std::chrono::duration_cast<std::chrono::microseconds>(time_end - time_beg).count();

        io_counter_per_thread[id]++;
        perf.consumed_time += duration;
        perf.io_finished++;

        prod_cond.notify_one();
    }
开发者ID:aykgb,项目名称:test,代码行数:26,代码来源:io_processor.hpp


示例10: on_open

 // 接続時に呼び出されるイベントリスナ
 void on_open() {
   std::cout << "接続しました。" << std::endl;
   std::unique_lock<std::mutex> lock(sio_mutex);
   is_connected = true;
   // 接続処理が終わったのち、待っているメインスレッドを起こす
   sio_cond.notify_all();
 }
开发者ID:llamerada-jp,项目名称:socket.io-cpp-client-sample,代码行数:8,代码来源:client.cpp


示例11: waits

void waits()
{
    std::unique_lock<std::mutex> lk(cv_m);
    std::cout << "Waiting... \n";
    cv.wait(lk, []{return i == 1;});
    std::cout << "...finished waiting. i == 1\n";
}
开发者ID:CCJY,项目名称:coliru,代码行数:7,代码来源:main.cpp


示例12: post

 void post()
 {
     std::lock_guard<std::mutex> lock(mutex_);
     //++count_;
     work_waiting = true;
     condition_.notify_one();
 }
开发者ID:STEllAR-GROUP,项目名称:xpress-apex,代码行数:7,代码来源:semaphore.hpp


示例13: process

/*处理函数*/
void ThreadPool::process()
{
while(running)
{
		try{
		threadMtx.lock();
		cond_var.wait(threadMtx);
		threadMtx.unlock();

		Message message=msgQueue.pop();	//从消息队列获得消息
		int socket=message.getFd();
        //获取消息长度
		uint32 size=0;
		Recv(socket,&size,sizeof(size),0);
		//获取消息内容
		char *buffer=new char[size];
		Recv(socket,buffer,size,MSG_WAITALL);
		//设置消息内容
		message.setContent(buffer,size);
		delete[] buffer;
		parse(message);					//交给parse解析
		rmWork();
		}
		catch(Exception &error)
		{
				error.exit();
		}
}
}
开发者ID:riccoqu,项目名称:Paradise-BackUp,代码行数:30,代码来源:threadpool.cpp


示例14: unlock_read

//---------------------------------------------------------------------------
//  function :  unlock_read
/// @brief This function unlock the read operation
//---------------------------------------------------------------------------
void unlock_read ( void)
{   //-------------------------- begin --------------------
    std::unique_lock <spinlock> UL ( spl);
    assert ( nread > 0  );
    nread--;
    if ( nread == 0 ) cv_no_readers.notify_all() ;
};
开发者ID:fjtapia,项目名称:countertree_2.0,代码行数:11,代码来源:mutex_data.hpp


示例15: on_connected

 void on_connected()
 {
     _lock.lock();
     _cond.notify_all();
     connect_finish = true;
     _lock.unlock();
 }
开发者ID:ElvisZuo,项目名称:Socket.IO,代码行数:7,代码来源:main.cpp


示例16: waits

void waits(int idx)
{
    std::unique_lock<std::mutex> lk(cv_m);
    if(cv.wait_for(lk, std::chrono::milliseconds(idx*100), [](){return i == 1;})) 
        std::cerr << "Thread " << idx << " finished waiting. i == " << i << '\n';
    else
        std::cerr << "Thread " << idx << " timed out. i == " << i << '\n';
}
开发者ID:CCJY,项目名称:coliru,代码行数:8,代码来源:main.cpp


示例17: ComeToWork

 void ComeToWork()
 {
     std::cout << "Hey security, please open the door!\n";
     g_Bell.notify_one();
     std::mutex mutex;
     mutex.lock();
     g_Door.wait(mutex);
     mutex.unlock();
 }
开发者ID:lmikheevskaya,项目名称:LevelUP_Junior,代码行数:9,代码来源:condition_variable.cpp


示例18: wait

 void wait()
 {
     std::unique_lock<std::mutex> lock(mutex_);
     //while(!count_)
     while(!work_waiting)
         condition_.wait(lock);
     work_waiting = false;
     //--count_;
 }
开发者ID:STEllAR-GROUP,项目名称:xpress-apex,代码行数:9,代码来源:semaphore.hpp


示例19: signals

void signals()
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    {
        std::lock_guard<std::mutex> lk(cv_m);
        std::cout << "Notifying...\n";
    }
    cv.notify_all();
 
    std::this_thread::sleep_for(std::chrono::seconds(1));
 
    {
        std::lock_guard<std::mutex> lk(cv_m);
        i = 1;
        std::cout << "Notifying again...\n";
    }
    cv.notify_all();
}
开发者ID:CCJY,项目名称:coliru,代码行数:18,代码来源:main.cpp


示例20: wait_no_readers

//---------------------------------------------------------------------------
//  function : wait_no_readers
/// @brief This function wait until the number of readers over the data
///         structure is 0
//---------------------------------------------------------------------------
void wait_no_readers ()
{
    struct shuttle
    {   rw_mutex_data &r ;
        shuttle ( rw_mutex_data & Alfa):r(Alfa){ };
        bool operator( )( void) { return (r.no_readers() );};
    } S ( *this);
    cv_no_readers.wait ( mtx_no_readers,S );
};
开发者ID:fjtapia,项目名称:countertree_2.0,代码行数:14,代码来源:mutex_data.hpp



注:本文中的std::condition_variable_any类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ std::default_random_engine类代码示例发布时间:2022-05-31
下一篇:
C++ std::basic_string类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap