当前位置: 首页>>代码示例>>C++>>正文


C++ condition_variable::wait方法代码示例

本文整理汇总了C++中boost::condition_variable::wait方法的典型用法代码示例。如果您正苦于以下问题:C++ condition_variable::wait方法的具体用法?C++ condition_variable::wait怎么用?C++ condition_variable::wait使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在boost::condition_variable的用法示例。


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

示例1: main

int main()
{
  {
    boost::unique_lock<boost::mutex> lk(mut);
    boost::thread t(f);
    BOOST_TEST(test1 == 0);
    while (test1 == 0)
      cv.wait(lk);
    BOOST_TEST(test1 != 0);
    test2 = 1;
    lk.unlock();
    cv.notify_one();
    t.join();
  }
  test1 = 0;
  test2 = 0;
  {
    boost::unique_lock<boost::mutex> lk(mut);
    boost::thread t(f);
    BOOST_TEST(test1 == 0);
    while (test1 == 0)
      cv.wait(lk);
    BOOST_TEST(test1 != 0);
    lk.unlock();
    t.join();
  }

  return boost::report_errors();
}
开发者ID:0xDEC0DE8,项目名称:mcsema,代码行数:29,代码来源:wait_until_pred_pass.cpp

示例2: wait

 void wait() {
     boost::unique_lock<boost::mutex> lock ( mutex_ );
     while ( count_ == 0 ) {
         condition_.wait ( lock );
     }
     --count_;
 }
开发者ID:richarddan,项目名称:ImageMeasure,代码行数:7,代码来源:Semaphore.hpp

示例3: main

int main( int argc, char* argv[] )
{
	TA_Base_Test::CBoostLogger BoostLogger;
	BOOST_LOG_FUNCTION();


	TA_Base_Test::CTestCase* pTestCase = new TA_Base_Test::CTestCase();

	if (1 == g_runAsServer)
	{
		pTestCase->runTestCase_ForServer();
	}
	else
	{
		pTestCase->runTestCase_ForClient();
	}
	//

	//sleep
	{	
		boost::mutex::scoped_lock lock(g_mutexMainRun);
		g_conditionMainRun.wait(lock);
	}

	delete pTestCase;
	pTestCase = NULL;


	return 0;
}
开发者ID:lslProjectOrg,项目名称:Projects,代码行数:30,代码来源:main.cpp

示例4: wait

 void wait()
 {
     boost::mutex::scoped_lock lock(mutex_);
     while(!count_)
         condition_.wait(lock);
     --count_;
 }
开发者ID:yangyan,项目名称:RV_XJTU_CS,代码行数:7,代码来源:semaphore.hpp

示例5: WaitForWork

void WorkManagerImpl::WaitForWork()
{
    boost::unique_lock<boost::mutex> lock(m_dispatchermutex);
    while(m_workreq <= 0) m_condition.wait(lock);
    m_workreq--;
    if(m_workreq < 0) m_workreq = 0;
}
开发者ID:joelam789,项目名称:esnetwork,代码行数:7,代码来源:WorkManager.cpp

示例6: pull

	TaskPtr pull() {
		boost::unique_lock<boost::mutex> lock(_mutex);
		while (_running) {
			std::cout << "pull 0" << std::endl;
			if (!_tasks.empty()) {
				std::cout << "pull A" << std::endl;

				TaskPtr task = _tasks.front();
				_tasks.pop_front();
				return task;
			} else {
				std::cout << "pull B" << std::endl;
				_no_task.wait(lock);
				std::cout << "pull C" << std::endl;
			}
		}
		while (!_running) {
			std::cout << "pull 1" << std::endl;
			if (!_tasks.empty()) {
				std::cout << "pull D" << std::endl;
				TaskPtr task = _tasks.front();
				_tasks.pop_front();
				return task;
			} else {
				std::cout << "pull E" << std::endl;
				return TaskPtr();
			}
		}
		return TaskPtr();
	}
开发者ID:sinofool,项目名称:sftool,代码行数:30,代码来源:executor.hpp

示例7: while

boost::shared_ptr< const MapsBuffer::MapsRgb > 
MapsBuffer::getFront(bool print)
{
  boost::shared_ptr< const MapsBuffer::MapsRgb > depth_rgb;
  {
    boost::mutex::scoped_lock buff_lock (bmutex_);
    while (buffer_.empty ())
    {
      if (is_done)
        break;
      {
        boost::mutex::scoped_lock io_lock (io_mutex);
              //std::cout << "No data in buffer_ yet or buffer is empty." << std::endl;
      }
      buff_empty_.wait (buff_lock);
    }
    depth_rgb = buffer_.front ();
    buffer_.pop_front ();
  }
  
  if(print)
    PCL_INFO("%d maps left in the buffer...\n", buffer_.size ());
  
  return (depth_rgb);
}
开发者ID:hobu,项目名称:pcl,代码行数:25,代码来源:record_maps_rgb.cpp

示例8: displayThreadLoop

void displayThreadLoop()
{
	printf("started image display thread!\n");
	boost::unique_lock<boost::mutex> lock(openCVdisplayMutex);
	while(imageThreadKeepRunning)
	{
		openCVdisplaySignal.wait(lock);

		if(!imageThreadKeepRunning)
			break;

		while(displayQueue.size() > 0)
		{
			if(!displayQueue.back().autoSize)
			{
				if(openWindows.find(displayQueue.back().name) == openWindows.end())
				{
					cv::namedWindow(displayQueue.back().name, cv::WINDOW_NORMAL);
					cv::resizeWindow(displayQueue.back().name, displayQueue.back().img.cols, displayQueue.back().img.rows);
					openWindows.insert(displayQueue.back().name);
				}
			}
			cv::imshow(displayQueue.back().name, displayQueue.back().img);
			cv::waitKey(1);
			displayQueue.pop_back();
		}
	}
	cv::destroyAllWindows();
	openWindows.clear();

	printf("ended image display thread!\n");
}
开发者ID:siposcsaba89,项目名称:lsd_slam,代码行数:32,代码来源:ImageDisplay_OpenCV.cpp

示例9: consumeToLog

    void consumeToLog()
    {
        while (true)
        {
            try
            {
                typename LogObject::SmartPtr logObj;
                {
                    boost::mutex::scoped_lock lock(_qMutex);

                    while (_queue.size() == 0)
                    {
                        if (_isStopping)
                        {
                            std::cout << " Stopping consumeToLog Thread. " << std::endl;
                            return;
                        }
                        _qCondVar.wait(lock);
                    }

                    // Get the entry
                    logObj = _queue.front();
                    _queue.pop();
                }
                printLogObject(logObj);
            }
            catch (const boost::thread_interrupted& err)
            {
                std::cout << " Log::consumeToLog() - Got Interrupt Signal. " << _queue.size() << std::endl;
            }
        }//while
    }
开发者ID:ankithbti,项目名称:fitiedCoreCpp,代码行数:32,代码来源:Log.hpp

示例10: record_thread_loop

    void record_thread_loop(void)
    {
        int buffer_no = 0;

        /* open log file*/
        FILE *logfile = fopen("fwrite_thread_testlog.log","w");
        BOOST_REQUIRE_MESSAGE(logfile != NULL, "Could not open logfile!");

        boost::unique_lock<boost::mutex> lock(mutex);

        while(record_thread_running)
        {
            record_trigger.wait(lock);
            if(buffer_no < 2)
            {
                active_buffer = &string_buffer_2;
                fwrite(string_buffer_1.c_str(), sizeof(char), string_buffer_1.length(), logfile);
                string_buffer_1.clear();
                buffer_no = 2;
            }
            else
            {
                active_buffer = &string_buffer_1;
                fwrite(string_buffer_2.c_str(), sizeof(char), string_buffer_2.length(), logfile);
                string_buffer_2.clear();
                buffer_no = 1;
            }
        }
        fclose(logfile);
    }
开发者ID:Tri-o-copter,项目名称:Brainware,代码行数:30,代码来源:logging_thread_tests.cpp

示例11: slave_thread

void slave_thread(int id)
{
    printf("    +++ slave thread %d: starting\n", id);

    while (true)
    {
        boost::unique_lock<boost::mutex> lock(data_ready_mutex);
        while (!data_ready)
        {
            data_ready_cond.wait(lock);
        }
        data_ready = false;

        unsigned work_unit;
        {
            boost::lock_guard<boost::mutex> lock(work_queue_mutex);
            if (work_queue.size() == 0)
                abort();
            work_unit = work_queue.back();
            work_queue.pop_back();
        }
        printf("        slave thread %d: got work unit %u\n", id, work_unit);

        // Pretend to work
        boost::chrono::milliseconds sleepDuration(3);
        boost::this_thread::sleep_for(sleepDuration);
    }

    printf("    --- slave thread %d: finished\n", id);
}
开发者ID:ausanyal,项目名称:testCode,代码行数:30,代码来源:many_consumers.cpp

示例12: status_paused_wait

static void status_paused_wait(Recog *recog, void *dummy) {

	boost::unique_lock<boost::mutex> lock(pause_mutex);

	pause_variable.wait(lock);

}
开发者ID:pr3mar,项目名称:ROS,代码行数:7,代码来源:recognizer.cpp

示例13: record_thread_loop

    void record_thread_loop(void)
    {
        int buffer_no = 0;
        std::ofstream logfile;

        /* open log file*/
        logfile.open ("stream_thread_testlog.log", ios::out);
        if (!logfile.is_open())
        {
            cout << "Could not open logfile!" << endl;
        }

        boost::unique_lock<boost::mutex> lock(mutex);

        while(datagen_thread_running)
        {
            record_trigger.wait(lock);
            if(buffer_no < 2)
            {
                active_buffer = &string_buffer_2;
                logfile << string_buffer_1;
                string_buffer_1.clear();
                buffer_no = 2;
            }
            else
            {
                active_buffer = &string_buffer_1;
                logfile << string_buffer_2;
                string_buffer_2.clear();
                buffer_no = 1;
            }
        }
        logfile.close();
    }
开发者ID:Tri-o-copter,项目名称:Brainware,代码行数:34,代码来源:logging_thread_tests2.cpp

示例14: main

int main(int argc, char* argv[])
{
    if (argc < 3) {
        cout << "Usage: " << argv[0] << " <host> <port> [magic_bytes=0xd9b4bef9ul]" << endl
             << "  Pings a bitcoin-like node and gets the version information." << endl;
        return 0;
    }
    uint16_t port = strtoul(argv[2], NULL, 10);

    NetworkAddress address(NODE_NETWORK, DEFAULT_Ipv6, port);

    CoinNodeSocket nodeSocket;

    try {
        nodeSocket.open(MessageHandler, listener_network::MAGIC_BYTES, listener_network::PROTOCOL_VERSION, argv[1], port);
        nodeSocket.doHandshake(listener_network::PROTOCOL_VERSION, NODE_NETWORK, time(NULL), address, address, 0, "", 0);
        nodeSocket.waitOnHandshakeComplete();

        boost::unique_lock<boost::mutex> lock(mutex);
        while (!bGotVersion) gotVersion.wait(lock);
    }
    catch (const exception& e) {
        cout << e.what() << endl;
    }
}
开发者ID:AndreV84,项目名称:mSIGNA,代码行数:25,代码来源:ping.cpp

示例15: startDocument

bool PresentationEngineManager::startDocument( const std::string &file ) {
	LDEBUG( "PresentationEngineManager", "Start document: doc=%s", file.c_str() );

	if (formatter()) {
		_sys->enqueue( boost::bind( &PresentationEngineManager::stopDocument, this ) );
		{ //	Wait for compare
			boost::unique_lock<boost::mutex> lock( _stopMutex );
			while (!_stopped) {
				_stopWakeup.wait( lock );
			}
			_stopped = false;
		}

	}

	//	Init settings module
	player::settings::init();

	initFormatter( file );
	if (!formatter()->parseDocument()) {
		LWARN( "PresentationEngineManager", "parseDocument fail" );
		return false;
	}

	//	Play formatter
	_sys->enqueue( boost::bind( &FormatterMediator::play, formatter() ) );

	return true;
}
开发者ID:jgrande,项目名称:ginga,代码行数:29,代码来源:presentationenginemanager.cpp


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