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

网站投票活动怎么做最有效的宣传方式

网站投票活动怎么做,最有效的宣传方式,贵阳培训网站建设,沈阳响应式网站制作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.khdw.cn/news/44507.html

相关文章:

  • 模板建站费用百度排名优化咨询电话
  • 好用的海报设计网站哪里有软件培训班
  • wordpress lophita站长之家seo概况查询
  • 问问建设网站的人网页制作的软件
  • 做虚拟网站要花多少钱全网seo优化电话
  • 网站开发纠纷案google play官网下载
  • 网站域名根目录在哪里百度一下你就知道移动首页
  • 网站做中英文英文太长怎么办精准营销的概念
  • 彩票网站做任务赚钱东莞网站制作推广公司
  • 不备案网站怎么做淘宝客长沙seo网站管理
  • 广州市 网站建设 有限公司网络热词有哪些
  • 视频网站的服务器多大网站建设与网页设计制作
  • 培训机构网站开发线下推广的渠道和方法
  • 手机做网站的营销策划培训
  • ftp上传网站优化手机性能的软件
  • 网站数据比较seo刷网站
  • 德州做网站的公司360网站收录提交入口
  • 政府网站查询国内做seo最好公司
  • wordpress 网站上传到服务器广州最新疫情最新消息
  • 国内最好的网站建设公司上海网上推广
  • 网站建设套餐是什么意思培训班报名
  • 做网站联系我们模板免费成功的营销案例及分析
  • 手机上怎么提取公积金网络推广关键词优化公司
  • 网络营销网站建设论文搜索引擎优化排名
  • 县门户网站建设整改百度推广一般要多少钱
  • 网站百度收录怎么做做小程序公司哪家好
  • 多语言做网站常用的网络营销工具
  • 专业的外贸网站建设公司最新热搜榜
  • 揭阳网站制作教程百度快速收录工具
  • 淘宝客购物网站的怎么做芜湖seo