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

大学网站建设公司网站建设山东聚搜网络

大学网站建设公司,网站建设山东聚搜网络,西安网站排名推广,辽宁同鑫建设网站2019独角兽企业重金招聘Python工程师标准>>> 算法参考:http://www.parallellabs.com/2010/10/25/practical-concurrent-queue-algorithm/,非常适合生产者-消费者模型。 注意:1、析构函数没有加锁,因为需要同时对head l…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

算法参考:http://www.parallellabs.com/2010/10/25/practical-concurrent-queue-algorithm/,非常适合生产者-消费者模型。

注意:1、析构函数没有加锁,因为需要同时对head lock和tail lock加锁。不建议在析构不确定的情况下使用。

2、经测试,比加锁的std::list快50%,比加锁的std::queue慢20%。

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片

template <typename T>  
class concurrent_queue  
{  
public:  concurrent_queue()  {  NODE* node = new NODE();  node->next = NULL;  head_ = node;  tail_ = node;  }  ~concurrent_queue()  {  NODE* node = head_;  do  {  node = erase_(node);  }  while(node != NULL);  }  void push(const T& val)  {  NODE* node = new NODE();  node->val = val;  node->next = NULL;  scoped_lock lock(t_lock_);  tail_->next = node;  tail_ = node;  }  bool pop(T* val)  {  scoped_lock lock(h_lock_);  if(empty_())  {  return false;  }  head_ = erase_(head_);  *val = head_->val;  return true;  }  private:  struct NODE  {  T val;  NODE* next;  };  private:  bool empty_() const  {  return head_->next == NULL;  }  NODE* erase_(NODE* node) const  {  NODE* tmp = node->next;  delete node;  return tmp;  }  private:  NODE* head_;  NODE* tail_;  concurrent_lock h_lock_;  concurrent_lock t_lock_;  
};  class concurrent_lock  
{  
public:  concurrent_lock()  {  InitializeCriticalSection(&cs_);  }  ~concurrent_lock()  {  DeleteCriticalSection(&cs_);  }  void lock()  {  EnterCriticalSection(&cs_);  }  void unlock()  {  LeaveCriticalSection(&cs_);  }  private:  CRITICAL_SECTION cs_;  
};  class scoped_lock  
{  
public:  scoped_lock(const concurrent_lock& lock) : lock_(lock)  {  const_cast<concurrent_lock&>(lock_).lock();  }  ~scoped_lock()  {  const_cast<concurrent_lock&>(lock_).unlock();  }  private:  const concurrent_lock& lock_;  
};


转载于:https://my.oschina.net/u/1537391/blog/269799

http://www.lbrq.cn/news/2422603.html

相关文章:

  • 苏州做网站公司乛 苏州聚尚网络网址大全2345
  • 温州手机网站制作联系电话网站开发的流程
  • 个人怎么建设图书网站推广引流渠道有哪些
  • 旅游网站建设注册网游推广
  • 网站域名备案与不备案的区别软文广告是什么意思
  • 网站设计与管理的软件怎么做网络宣传推广
  • wordpress上传大小限制东莞网络推广优化排名
  • wordpress会员计时重庆黄埔seo整站优化
  • wordpress调整侧边栏的高度百度seo和sem
  • 网站做电话线用二十四个关键词
  • 网站建设教程 冰美人视频网络推广费计入什么科目
  • 做包皮医院网站百度手机版下载
  • 陕西 网站建设sem优化师是做什么的
  • 新手做网站做什么样的竞价被恶意点击怎么办
  • 做网站用什么系统好竞价广告
  • 郑州的做网站公司天津seo技术教程
  • 厦门网站建设哪家公司好关键词seo排名怎么样
  • 商洛网站制作seo合作
  • 免费企业建站系统排名360搜索优化
  • 驾校一点通网站怎么做电商网站排名
  • 网站建设和编程的区别丽水百度seo
  • 做网站建设的公司有哪些内容品牌营销成功案例
  • 网站备案后 如何建设长沙百家号seo
  • 湖北网站建设 鄂 icp长春seo顾问
  • 长春建设集团网站百度搜索引擎收录
  • 微信对接网站可以做301跳转吗今日百度小说排行榜风云榜
  • 西安高校定制网站建设公司推荐电商网站规划
  • 企业网站搭建哪家好新闻源发稿平台
  • 动软代码生成器 做网站网站百度不收录
  • 北京通州网站建设石家庄网络seo推广
  • Java 大视界 -- Java 大数据在智能医疗医疗设备维护与管理中的应用(358)
  • Python可迭代归约函数深度解析:从all到sorted的进阶指南
  • Node.js的Transform 流
  • 【初识数据结构】CS61B中的最小生成树问题
  • LVS-----TUN模式配置
  • 零基础学习性能测试第三章:执行性能测试