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


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

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


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

示例1: work

void work(int serial, int &value, condition_variable &c, mutex &m, int &turn)
{
    while (1) {
        {
            unique_lock w{m};
            // ожидаем наступления события turn == serial
            c.wait(w, [&turn, &serial]() { return turn == serial; });
        }

        if (value >= 1000) {
            lock_guard w{m};
            turn = (turn + 1) % 2;
            c.notify_all();
            break;
        }
        cout << serial <<  " " << value << endl;
        ++value;

        {
            lock_guard w{m};
            turn = (turn + 1) % 2;
            c.notify_all();
        }
    }
}
开发者ID:blackav,项目名称:cmc-cpp-seminars,代码行数:25,代码来源:07_condvar_all.cpp

示例2: add

 // assume the _files_lock is held
 void add(file_entry_t fe) {
     fe_get(fe);
     cur_lock.lock();
     cur_set->insert(fe);
     cur_lock.unlock();
     cond.notify_all();
 }
开发者ID:columbia,项目名称:grandet,代码行数:8,代码来源:main.cpp

示例3: WriteUnLock

    void WriteUnLock() {
        unique_lock<mutex> lk(mtx);
        is_writing = false;
        readerQ.notify_all();

        lk.unlock();
    }
开发者ID:pbrother,项目名称:coding_practice,代码行数:7,代码来源:threadsafe_map.cpp

示例4: filter

	static void filter()
	{
		size_t filterCount = 0;
	
		for (;;) {
			unique_lock<mutex> filterLock(sync);

			step2Condition.wait(filterLock, []() {return !nums.empty() || count == NUM_COUNT; });
			if (nums.empty()) {
				break;
			}

			int front = nums.front();
			if (front % 3 != 0 && front % 13 != 0) {
				filteredNums.push_back(front);
				filterCount++;
			}
			nums.erase(nums.begin(), nums.begin() + 1);

			filterLock.unlock();
		}
		step3Condition.notify_all();

		// Print trace of consumption
		//lock_guard<mutex> out(print);
		//cout << "Step 2 thread done -- filtered: " << filterCount << endl;
	}
开发者ID:heed13,项目名称:CS3370,代码行数:27,代码来源:main.cpp

示例5: producer

	static void producer()
	{
		// Set Seed
		srand(time(nullptr));
		size_t addCount = 0;

		// Get X random numbers
		for (;;) {

			unique_lock<mutex> addLock(sync);
			if (count >= NUM_COUNT) break;


			int n = rand();

			// Push int
			nums.push_back(n);
			addCount++;		
			count++;
			addLock.unlock();
			step2Condition.notify_one();


		}
		step2Condition.notify_all();

		//lock_guard<mutex> out(print);
		//cout << "Step 1 thread done -- added: " << addCount << endl;
	}
开发者ID:heed13,项目名称:CS3370,代码行数:29,代码来源:main.cpp

示例6: fun_wrap

void fun_wrap(bool& done, condition_variable& e, mutex& m, boost::function<void(void)> f)
{
	f();
	mutex::scoped_lock l(m);
	done = true;
	e.notify_all();
}
开发者ID:aresch,项目名称:libtorrent,代码行数:7,代码来源:session_call.cpp

示例7: push

 void push(T& entry)
 {
     unique_lock<mutex> uniqueLock(mtx);
     tsQueue.push(entry);
     uniqueLock.unlock();
     cv.notify_all();
 }
开发者ID:sourishm,项目名称:Prod_Cons,代码行数:7,代码来源:main.cpp

示例8: release_write

 void release_write() const
 {
     mutex::guard g( mutex_ );
     has_writer_ = writer_waiting_ = false;
     writer_cv_.notify_one();
     reader_cv_.notify_all();
 }
开发者ID:jingpengwu,项目名称:znn-v4-mkl,代码行数:7,代码来源:rwmutex_impl.hpp

示例9: ReadUnLock

    void ReadUnLock() {
        unique_lock<mutex> lk(mtx);
        readers--;
        if(readers == 0)
            writerQ.notify_all();

        lk.unlock();
    }
开发者ID:pbrother,项目名称:coding_practice,代码行数:8,代码来源:threadsafe_map.cpp

示例10: push

 void push(int data) {
     {
         unique_lock<mutex> lk(m);
         cv.wait(lk,[this](){ return data_queue.size()<max_size; });
         data_queue.push(data);
     }
     cv.notify_all();
 }
开发者ID:hp2oo1,项目名称:concurrency,代码行数:8,代码来源:solution.cpp

示例11: decide_read

 void decide_read() const
 {
     mutex::guard g( mutex_ );
     upgratable_     = false;
     writer_waiting_ = false;
     writer_cv_.notify_one();
     reader_cv_.notify_all();
 }
开发者ID:jingpengwu,项目名称:znn-v4-mkl,代码行数:8,代码来源:rwmutex_impl.hpp

示例12: write_to_read

 void write_to_read() const
 {
     mutex::guard g( mutex_ );
     ++reader_count_;
     has_writer_     = false;
     writer_waiting_ = false;
     writer_cv_.notify_one();
     reader_cv_.notify_all();
 }
开发者ID:jingpengwu,项目名称:znn-v4-mkl,代码行数:9,代码来源:rwmutex_impl.hpp

示例13: pop

 void pop(int& data) {
     {
         unique_lock<mutex> lk(m);
         cv.wait(lk,[this](){ return data_queue.size()>0; });
         data = data_queue.front();
         data_queue.pop();
     }
     cv.notify_all();
 }
开发者ID:hp2oo1,项目名称:concurrency,代码行数:9,代码来源:solution.cpp

示例14: BPCallback

bool BPCallback (void *baton,
                 SBProcess &process,
                 SBThread &thread,
                 SBBreakpointLocation &location) {
  lock_guard<mutex> lock(g_mutex);
  g_breakpoint_hit_count += 1;
  g_condition.notify_all();
  return true;
}
开发者ID:Jean-Daniel,项目名称:lldb,代码行数:9,代码来源:test_breakpoint_callback.cpp

示例15: movePeople

void movePeople(vector<Human> &v) {
	unique_lock<mutex> lck(mtx);
	while (index == v.size()) cv.wait(lck);
	current_floor = v[index].current_floor;
	cout << " Elevator is picking up person:  " << v[index].getID() << " at floor " << current_floor << endl;
	current_floor = v[index].next_floor;
	cout << " Elevator has dropped off person: " << v[index].getID() << " at floor " << current_floor << endl;
	index++;
	cv.notify_all();
}
开发者ID:TheRobin1226,项目名称:elevatorsimulation-project,代码行数:10,代码来源:Source.cpp


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