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

东莞优秀网站建设公司建设网站服务器必要条件

东莞优秀网站建设,公司建设网站服务器必要条件,河南广宇建设集团有限公司网站,手机如何制作自己的网站C++并发编程:构建线程安全队列(第二部分:细粒度锁) 1. 引言 在多线程环境下,为了保证数据的一致性和正确性,需要使用同步原语来对共享数据的访问进行互斥和同步。std::queue作为一种先进先出(FIFO)的数据结构,它本身并不是线程安全的,同时访问它可能导致数据竞争和不一致的问…C++并发编程:构建线程安全队列(第二部分:细粒度锁) 1. 引言 在多线程环境下,为了保证数据的一致性和正确性,需要使用同步原语来对共享数据的访问进行互斥和同步。std::queue作为一种先进先出(FIFO)的数据结构,它本身并不是线程安全的,同时访问它可能导致数据竞争和不一致的问题。 所以在多线程环境下,我们需要构建一个线程安全的队列,使其可以安全地被多个线程同时访问,而不会出现数据竞争。这里我们使用C++11中的一些新特性如std::shared_ptr、std::unique_ptr、std::mutex、std::condition_variable等来实现一个线程安全队列。 2. 设计要点 线程安全队列的关键设计要点包括: 使用互斥量保护队列的头尾指针,使多线程不能同时修改队列结构使用条件变量实现线程之间的通知和等待,避免忙等待(busy waiting)提供多种不同的访问接口如阻塞、非阻塞、等待获取等,增强队列的实用性使用std::shared_ptr、std::unique_ptr等智能指针管理内存,避免手动new/delete带来的问题尽量减少锁的粒度,例如头尾指针使用不同的锁,以提高并发性下面我们来看一下这个线程安全队列的具体设计和实现。 3. 队列的节点结构 队列节点node使用一个std::shared_ptr保存数据,和一个std::unique_ptr指向下一节点: struct node {std::shared_ptrT data;std::unique_ptrnode next; };使用shared_ptr而不是原始指针管理数据,可以自动释放内存,避免泄漏。unique_ptr则保证节点间的引用关系唯一,方便传递所有权。 4. 队列结构 队列结构包含头尾指针、互斥量和条件变量: std::mutex head_mutex; std::unique_ptrnode head;std::mutex tail_mutex; node* tail;std::condition_variable data_cond;头指针使用unique_ptr且初始化为一个哑节点。尾指针使用原始指针,初始化指向哑节点。 头尾指针分别使用head_mutex和tail_mutex保护,以减小锁的粒度,不同指针可以并发修改。 条件变量data_cond用于在队列为空时等待,并在有数据可获取时发出通知。 5. 主要接口 队列主要提供下面一些接口: 5.1 非阻塞获取 try_pop尝试非阻塞地弹出队头元素,如果队列为空则直接返回: std::shared_ptrT try_pop() {std::lock_guardstd::mutex head_lock(head_mutex);if (head.get() == get_tail()) {return {}; }return std::move(head-data); }仅对头指针上锁,执行常数时间操作,可并发访问。 5.2 阻塞获取 wait_and_pop会在队列为空时等待,直到有元素入队后唤醒线程并返回数据: std::shared_ptrT wait_and_pop() {std::unique_lockstd::mutex head_lock(wait_for_data());return std::move(head-data); }std::unique_lockstd::mutex wait_for_data() {std::unique_lockstd::mutex
http://www.laogonggong.com/news/116753.html

相关文章:

  • asp.net网站设计分工企业大学网站建设计划
  • 承接app网站开发的广告网站建设主题
  • 10个网站老薛主机wordpress设置
  • 商城网站项目策划书wordpress免费家居主题
  • php和python百度seo 站长工具
  • wordpress做网站优点西安网站建设 中讯创赢
  • 国外网站 国内访问速度财务公司经营范围有哪些
  • 东莞纸箱厂东莞网站建设海报图片怎么设计制作
  • 驾考学时在哪个网站做wordpress 临时文件夹
  • 泉州营销型网站设计子商务网站建设的一般流程图
  • 沈阳做网站有名公司美容整形网站模板
  • 郑州制作网站电话133免费网站的平台
  • 怎么建公司网站教程wordpress 酒店
  • dremrever怎么做网站动画视频制作
  • 公司商城网站开发费做什么科目如何网页优化
  • 网站设计就业怎么样征二级网站建设意见 通知
  • 网站建设公司如何拓宽业务企业网站注册官网
  • 淮南招聘网站建设双峰网站建设
  • 网站设计公司山东烟台ui设计是学什么的
  • 做资源网站有哪些邵阳建设局网站
  • 建站网站是什么万网个人网站建设教程
  • 定制网站丽江市住房与城乡建设局网站
  • 怎么自己搭建一个博客网站展开网站建设
  • dw做的网站怎样才有域名如何做网站推广赚钱
  • 台州企业网站搭建厂家比较好的高端网站制作公司
  • 网站制作与建设教程下载合肥哪家制作网站
  • 网站制作排版宁德seo推广
  • 织梦做的网站首页幻灯片怎么不能显示wordpress登陆菜单
  • 南山网站建设哪家便宜山西省建设厅网站 孙涛
  • 公司网站的搭建方案网站建设都需要哪些材料