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


C++ atomic::fetch_add方法代码示例

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


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

示例1: await

	bool await(function<void()> cb = []{}) {
		int my_gen = generation.load();
		if (count.fetch_add(1) == N_THREADS - 1) {
			if (cb) cb();
			count.store(0);
			generation.fetch_add(1);
			return true;
		} else {
			do { } while (my_gen == generation.load());
			return false;
		}
	}
开发者ID:Feder1co5oave,项目名称:GameOfLife,代码行数:12,代码来源:Barrier_atomic.hpp

示例2: numberOfFaces

void numberOfFaces(string filePath)
{ 
	if (!instance.get()) {
		CascadeClassifier* face_cascade = new CascadeClassifier();
		face_cascade->load(face_cascade_name);
		instance.reset(face_cascade);
	}

	Mat faceImage = imread(filePath, IMREAD_COLOR);
	if (faceImage.empty()) // Check for invalid input
	{
		cout << "Could not open or find the image" << endl;
		return;
	}

	Mat frame_gray;
	std::vector<Rect> faces;
	cvtColor(faceImage, frame_gray, CV_BGR2GRAY);
	equalizeHist(frame_gray, frame_gray);

	instance->detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
	int numFaces = faces.size();
	//cout << "Found " << numFaces << " faces in image: " << filePath << endl;
	totalFaces.fetch_add(numFaces, boost::memory_order_seq_cst);
	//cout << "Total: " << totalFaces << endl;
	/*if (numFaces > 0)
	{
		drawFaceElipse(faceImage, faces);
	}*/
}
开发者ID:bobpaulin,项目名称:OpenCVFaceFinder,代码行数:30,代码来源:Main.cpp

示例3: atomic2

void atomic2(uint64_t cnt){
  for(uint64_t i=0; i<cnt; i++){
    total2.fetch_add(1);
    total2.fetch_sub(1);
    //total2++;
  }
}
开发者ID:zhuhk,项目名称:test-toys,代码行数:7,代码来源:t_c11.cpp

示例4:

		handle &create(
			const function<void()> &f){

			auto id = _id.fetch_add(1);
			auto t = make_unique<task>(id, f);
			auto &slot = tasks[id];

			slot = std::move(t);

			return slot->handle;
		}
开发者ID:1n01raymond,项目名称:lemon,代码行数:11,代码来源:task.cpp

示例5: barrier

// Aqui esta a barreira. Ela e uma barreira de propagacao.
static void barrier(int tid, int nthreads) {
     trava.lock();
     if (tid == nthreads-1) {
          itnumber.fetch_add(1);
     }
     order.push_back(tid);
     trava.unlock();
     int sid;
     for (int i = 1; i <= nrounds; ++i) {
          ++arrive[tid];
          // Determina quem a thread vai esperar.
          sid = (tid + power2to(i-1)) % nthreads;
          while (arrive[sid] < arrive[tid]) {
               this_thread::yield();
          }
     }
}
开发者ID:lvirgili,项目名称:concurrent_programming,代码行数:18,代码来源:ep2_graph.cpp


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