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

网站投票活动怎么做方法seo

网站投票活动怎么做,方法seo,logo在线设计软件,商标设计logo软件0.死锁的由来 假设有两个线程T1和T2,它们需要对两个互斥量mtx1和mtx2进行访问。而且需要按照以下顺序获取互斥量的所有权: -T1先获取mte1的所有权,再获取mt2的所有权。 -T2先获取 mtx2的所有权。再铁取 mtx1的所有权。 如果两个线程同时执行&#xff0c…

0.死锁的由来

假设有两个线程T1和T2,它们需要对两个互斥量mtx1和mtx2进行访问。而且需要按照以下顺序获取互斥量的所有权:
-T1先获取mte1的所有权,再获取mt2的所有权。
-T2先获取 mtx2的所有权。再铁取 mtx1的所有权。
如果两个线程同时执行,就会出现死锁问题。因为T1获取了mtx1的所有权,但是无法获取mtx2的所有权,而T2获取了mtx2的所有权,但是无法获取 mtx1的所有权,两个线程互相等待对方释放互斥量,导致死锁。

1.不同锁类型

类型类名作用
超时锁timed_mutex避免长时间死锁
递归锁recursive_mutex同一线程的同一锁可以锁多次避免死锁
共享锁shared_mutex可以充分利用cpu资源

2.各种锁

2.1超时锁

①作用:避免长时间死锁
②性质:可以记录锁获取情况,多次超时,可以记录日志,获取错误情况。

#include <iostream>
#include <thread>
#include <mutex>std::timed_mutex tmux;void ThreadMainTime(int i)
{for (;;){if (tmux.try_lock_for(std::chrono::microseconds(500))){std::cout << i << ":[try_lock_for timeout]" << std::endl;continue;}std::cout << "[in]"<< i << std::endl;tmux.unlock();std::this_thread::sleep_for(std::chrono::microseconds(1));}
}int main()
{for (int i = 0; i < 3; i++){std::thread th(ThreadMainTime, i + 1);th.detach();}getchar();return 0;
}

2.2递归锁

①作用:同一线程的同一锁可以锁多次,避免不必要的死锁。
②性质:组合业务用到同一个锁

注:recursive_timed_mutex为递归超时锁!

#include <iostream>
#include <thread>
#include <mutex>std::recursive_mutex rmux;void Task1()
{rmux.lock();std::cout << "task1 [in] " << std::endl;rmux.unlock();
}void Task2()
{rmux.lock();std::cout << "task2 [in] " << std::endl;rmux.unlock();
}void ThreadMainRec(int i)
{for (;;){rmux.lock();Task1();std::cout << i << "[in]" << std::endl;std::this_thread::sleep_for(std::chrono::microseconds(2000));Task2();rmux.unlock();}
}int main()
{for (int i = 0; i < 3; i++){std::thread th(ThreadMainRec, i + 1);th.detach();}getchar();return 0;
}

2.3共享锁

在这里插入图片描述

#include <iostream>
#include <thread>
#include <mutex>
#include <shared_mutex>std::shared_timed_mutex stmux;void ThreadRead(int i)
{for (;;){stmux.lock_shared();std::cout << "Read:" << i << std::endl;std::this_thread::sleep_for(std::chrono::microseconds(3000));stmux.unlock_shared();std::this_thread::sleep_for(std::chrono::microseconds(1));}
}void ThreadWrite(int i)
{for (;;){stmux.lock_shared();stmux.unlock_shared();stmux.lock();std::cout << "Write:" << i << std::endl;std::this_thread::sleep_for(std::chrono::microseconds(3000));stmux.unlock();std::this_thread::sleep_for(std::chrono::microseconds(1));}
}int main()
{for (int i = 0; i < 3; i++){std::thread th(ThreadWrite, i + 1);th.detach();}for (int i = 0; i < 3; i++){std::thread th(ThreadRead, i + 1);th.detach();}getchar();return 0;
}
http://www.dinnco.com/news/33902.html

相关文章:

  • 盐城那里做网站好点在线优化seo
  • 网站建设基础与实践重庆seo网站管理
  • 网站项目建设方案亚马逊免费的关键词工具
  • 做网站月薪两万竞价推广工具
  • 成都网站开发小吃培训2000元学6项
  • 用axure做高保真旅游网站小江seo
  • 公司网站怎么做网络营销策略研究论文
  • 淄博周村网站建设哪家好百度人工申诉客服电话
  • 保亭交通工程建设局网站换友情链接的网站
  • 广告模板网站有什么平台可以发布推广信息
  • vb 网站开发太原seo培训
  • 国外做建筑平面图的网站aso优化服务平台
  • 电子商务网站建设考试重点网络营销服务商有哪些
  • 个人做淘宝客网站有哪些优化教程网官网
  • 策划网站有哪些seoul是哪个国家
  • 网站建设中中文模板下载搜索引擎推广法
  • 如何做实体店的网站怎么制作网页设计
  • c2c模式的网站今日时事新闻
  • 长春好的做网站公司有哪些免费推广app软件下载
  • 做博客的网站有哪些功能深企在线
  • 网上做网站广告投放站长网
  • 做网站 广告 备案seo免费优化网站
  • 网站开发用哪种语言今日足球赛事数据
  • 如何做游戏网站今日实时热点新闻事件
  • 公司网站建设怎么选择网站提交入口大全
  • 许昌做网站公司汉狮价格谷歌搜索引擎网页版入口
  • 自己做的视频可以传别的网站去吗百度怎么做推广和宣传
  • 建设公司营销网站软文写作发布
  • 传奇网站劫持怎么做国内seo排名分析主要针对百度
  • 东城区住房和建设委员会网站seo软件优化工具软件