当前位置: 首页 > wzjs >正文

东莞做网站公司首选北京房产网58同城网

东莞做网站公司首选,北京房产网58同城网,深圳市住房和建设局办事大厅,淄博网站seo公司信号量是c中实现对有限资源访问控制,现成通过信号量获得对资源访问的许可。可用资源大于0,线程可以对资源进行访问,此时计数器减1。当计数器为0时,不可访问资源,线程进入等待。当资源释放时,线程结束等待&a…

信号量是c++中实现对有限资源访问控制,现成通过信号量获得对资源访问的许可。可用资源大于0,线程可以对资源进行访问,此时计数器减1。当计数器为0时,不可访问资源,线程进入等待。当资源释放时,线程结束等待,对资源进行访问。信号量限制并发访问的数量,互斥量实现对具体数据的同步。

release函数将技术值加1这是个原子操作,acquire将计数值减1,如果当前为大于1将减1,如果为0,该函数阻塞。信号量常用于生产者和消费者场景以及资源池应用场景。

下面通过一个停车场模拟信号量的使用

#include<array>
#include<vector>
#include<thread>
#include<iostream>
#include<mutex>
#include<algorithm>
#include<sstream>
#include<iomanip>
#include<semaphore>
#include<random>
#include<syncstream>
using namespace std;template<std::size_t N=10>class CarPark
{
public:CarPark() :sem(N) {};int enter() {//代表一辆车进入停车场osyncstream(cout) << "[" << this_thread::get_id() << "]准备进入停车场\n";sem.acquire();//获得进入的许可 sem计数代表剩余停车位lock_guard lock(mtx);osyncstream(cout) << "[" << this_thread::get_id() << "]\t进入停车场\n";for (int i = 0; i < N; i++){if (spaces[i].empty()){stringstream ss;ss<< this_thread::get_id();//相当于车牌号spaces[i] = ss.str();osyncstream(cout) << "[" << this_thread::get_id() << "]\t\t找到" << i << endl;return i;}}throw(runtime_error("程序异常到达此处"));}void dosomething(){this_thread::sleep_for(chrono::milliseconds(600));}void leave(int idx) //离开停车场{osyncstream(cout) << "[" << this_thread::get_id() << "]\t\t\t离开#" << idx << endl;{lock_guard lock(mtx);spaces[idx].clear();//空出的停车位}sem.release();}void enter_and_leave() //入场中间等待出场混合在一起{int spaceId = enter();dosomething();leave(spaceId);}
private:array<string,N>spaces; //代表N个停车位counting_semaphore<N>sem;//代表当前多少个空车位mutex mtx;//访问spcae时,线程间进行同步
};
int main()
{ const int NSpaces = 2;const int NCars = 5;CarPark<NSpaces>park; vector<thread>cars;//线程容器for (int i = 0; i < NCars; i++){cars.emplace_back([&park]() {park.enter_and_leave();});}for (auto& t : cars){t.join();}return 0;
}

运行结果 

接下来往一个循环buf读写数据

http://www.dtcms.com/wzjs/553172.html

相关文章:

  • 个人网站需要备案吗电商指的是什么行业
  • 网站百度没收录自治区住房和城乡建设部网站
  • 百度主机做视频网站怎么样广元网站开发
  • 余江区建设局网站老薛主机wordpress模板
  • 网站建设平台选用网页传奇app
  • 自己搞网站建设北京市中关村有哪家可以做网站维护
  • 模版网站建设步骤详解苏州的互联网企业
  • 全栈网站开发者ui一般用什么软件做
  • 成都网站建设开发百度竞价排名是哪种方式
  • 网站开发技术服务费合同深圳的网站建设公司的外文名是
  • 网站做淘客免费做企业推广的网站
  • 装饰工程施工郑州网站建设方案优化
  • php能区别电脑网站和手机网站吗怎么嵌入到phpcms北京网站建设企业网站制作
  • 建设网站一定要会代码吗网站怎么上传代码吗
  • 租车行网站模版电商公司怎么注册营业执照
  • 文化墙设计网站推荐WordPress模板资源下载站
  • 电子商务网站建设(论文网站搜索功能设计
  • 自己做的网站什么时候可以赚钱重庆网站备案注销
  • 什么是网站的访问流量做音乐网站首页要求
  • 网站开发专业定制北京建设厅网站首页
  • 图书馆网站开发总结企业为什么要ipo
  • 如何做ps4游戏视频网站上海市工程建设监理协会网站
  • 网页制作工具的选择与网站整体风格没有关系网页开发模板
  • 牛栏前网站建设如何刷网站流量
  • 网站备案代理公司网站抓取qq
  • 免费做网站怎么做网站吗wp博客seo插件
  • 建站官网模板百度账号中心官网
  • 网站优化方式重庆手机网站开发
  • 开发一个大型网站需要多少钱wordpress换域名后图片无法显示
  • 网页设计就是做网站优化的吗校园微网站建设方案ppt模板下载