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

成都网站制杭州市河道建设中心网站

成都网站制,杭州市河道建设中心网站,德州市住房建设局网站,孝感市门户std::stack容器的接口包括 empty(), size(), top(), push(), pop()等。 问题 其原接口在多线程的情况下#xff0c;会持续很多问题。 例如#xff0c;在std::stack容器的接口中#xff0c;在多线程下应用时#xff0c;empty()和size()的结果是不可信的。因为尽管在某线程…std::stack容器的接口包括 empty(), size(), top(), push(), pop()等。 问题 其原接口在多线程的情况下会持续很多问题。 例如在std::stack容器的接口中在多线程下应用时empty()和size()的结果是不可信的。因为尽管在某线程调用empty()或size()时返回值可能是正确的但是一旦函数返回其他线程就不再受限从而能自由地访问栈容器可能马上会有新元素入栈或者现有的元素立即出栈这会使前面线程得到的结果失效。 其次top()和pop()之间也存在着竞争条件例如 线程A线程Bif(!s.empty());if(!s.empty()); int const value s.top(); int const value s.top();s.pop()do_something(value);s.pop()do_something(value); 假设当前只有两个线程正在运行且在两个top()调用之间不存在其他操作那么栈容器不会被更改即两个线程会得到相同的值。另外在top()与pop()的调用之间也没有其他调用结果栈顶元素被调用了两次但栈顶的第二个元素却始终没被读取就丢弃了。 解决方法 为了线程安全在每次操作之前都加锁 面对第二个问题将top()和pop()操作合二为一 #include memory #include mutex #include stackusing namespace std;struct empty_stack :std::exception {const char* what() const throw(); };templatetypename T class threadsafe_stack { private:stackT data;mutable mutex m;public:threadsafe_stack() {};threadsafe_stack(const threadsafe_stack other){lock_guardmutex lock(other.m);data other.data;}threadsafe_stack operator(const threadsafe_stack) delete;void push(T new_value){lock_guardmutex lock(m);data.push(move(new_value));}shared_ptrT pop(){lock_guardmutex lock(m);if (data.empty()) throw empty_stack();shared_ptrTconst res(std::make_sharedT(data.top()));data.pop();return res;}void pop(T value){lock_guardmutex lock(m);if (data.empty()) throw empty_stack();value data.top();data.pop();}bool empty() const{lock_guardmutex lock(m);return data.empty();} };
http://www.w-s-a.com/news/981989/

相关文章:

  • 网站制作 南通有学给宝宝做衣服的网站吗
  • 做西式快餐店网站网络营销的含义是什么
  • 网络销售代理加盟南京seo排名扣费
  • 赤峰中国建设招标网站网站开发投标文件
  • 域名抢住网站婚庆网页设计
  • 公司网站建设的通知南宁怎么做网站
  • 搜狐快站建站教程电子商务网站后台模板
  • .gs域名做网站怎么样做网站有没有用
  • 肇庆住房和城乡建设局网站广州seo公司排名
  • j2ee网站开发买什么书网络媒体有哪些
  • 江西省住房建设部官方网站用多说的网站
  • 云课堂哪个网站做的好网站 集约化平台建设方案的通知
  • 撰写网站栏目规划怎么建自己的平台
  • 中国建设银行巴黎分行网站建设银行忘记密码网站首页
  • 网站左侧树形导航怎么做像wordpress一样的网站吗
  • 做网站用的书公司做网站 需要解决哪些问题
  • 电器网站建设策划书深圳动画制作
  • cpa网站建设wordpress支付宝微信收费吗
  • 权威网站排名桂林生活网论坛
  • 网站设计息济南网站建设济南
  • 安蓉建设总公司网站网站怎么做才能被百度收录
  • 电子商务网站业务流程分析做效果图的外包网站
  • wordpress仿站视频教程wordpress用什么php版本好
  • 郑州做网站九零后网络沧州做网站的专业公司
  • 小游戏网站建设可以自己做图片的软件
  • 湖南地税局官网站水利建设基金app仿制
  • 苏州网站设计kgwl建设网站需要用到哪些技术人员
  • 万户网络做网站如何亚马逊网站建设
  • 门户网站制作费用暴雪公司最新消息
  • 深圳专业建网站公司济南公司做网站的价格