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

网站建设简讯网站移动端怎么做的

网站建设简讯,网站移动端怎么做的,淘宝的网站怎么做,湖北百度推广公司目录 目录 多线程的创建与执行 多线程的互斥 1. 创建一个mutex对象#xff0c;lock(),unlock() 2. 借助lock_guard 3. unique_lock: lock_guard的升级加强版 多线程的创建与执行 1. C借助标准库thread来实现。将函数名放入线程中即可#xff0c;如果函数有参数…目录 目录 多线程的创建与执行 多线程的互斥 1. 创建一个mutex对象lock(),unlock() 2. 借助lock_guard 3. unique_lock: lock_guard的升级加强版 多线程的创建与执行 1. C借助标准库thread来实现。将函数名放入线程中即可如果函数有参数一同放入。 2. 执行方式有两种 join方式当启动的线程执行完毕后才会继续运行下面的代码 detach方式不必等待。 void func(int n, char c) {for (int i 0; i n; i) {cout c;}cout endl; }void test() {int n 10;char c *;thread thread1(func, n, c); //创建线程c %;thread thread2(func, n, c);thread1.join(); //等待线程1执行结束才会执行线程2thread2.join(); } 多线程的互斥 C引入了一个标准库mutex帮助实现简单的线程互斥。其中有3种方法。 1. 创建一个mutex对象lock(),unlock() 该对象对临界区上锁解锁实现只有一个线程访问临界区。 #includethread #includemutex using namespace std;mutex mtx; //创建一个mutex对象mtx void func(int n, char c) {mtx.lock(); //对临界区上锁for (int i 0; i n; i) {cout c;}cout endl;mtx.unlock(); //解锁 }void test() {int n 10;char c *;thread thread1(func, n, c); //创建线程c %;thread thread2(func, n, c);thread1.join(); //等待线程执行结束thread2.join(); } 2. 借助lock_guard 创建一个lock_guard对象他获取提供给他的互斥锁的所有权。 lock_guard创建即上锁超出作用域自动解锁不能中途解锁不能复制(因为它的赋值拷贝设置为私有成员函数了)。 优点防止忘记解锁造成死锁。 缺点整个作用域加锁锁的粒度太大。可以自己再加一个大括号来控制作用域。 #includethread #includemutexint temp 0; mutex temp_guard; //用来保护temp void func2(){//保证当当前进程访问调用函数fun2时,其他的会被阻塞//lock_guard在出作用域时会自动解锁//为访问公共资源 上锁const std::lock_guardstd::mutexlock(temp_guard); temp; }void test02() {thread thread1(func2);thread thread2(func2);thread1.join();thread2.join(); } 3. unique_lock: lock_guard的升级加强版 unique_lock的特点 1. 创建时可以不加锁参数std::defer_lock默认是创建加锁的。 2. 可以随时加锁解锁。lock(),unlock() 3. 不手动解锁的话超出作用域就自动解锁了。 4. 不能复制可以移动 struct Box //结构体中有一个数字 和mutex对象 {std::mutex mtx; //有一个互斥量int num;Box(int n):num(n){} };void transfer(Box from, Box to, int n) {//先创建锁,稍后加锁std::unique_lockmutexlock1(from.mtx, std::defer_lock);std::unique_lockmutexlock2(to.mtx, std::defer_lock);//同时对他们加锁lock(lock1, lock2);from.num - n;to.num n;}void test03() {Box from(100);Box to(30);std::thread thread1(transfer, std::ref(from), std::ref(to), 10);std::thread thread2(transfer, std::ref(from), std::ref(to), 20);thread1.join();thread2.join();cout from.num to.num endl;cout from.num to.num endl; }
http://www.zqtcl.cn/news/9358/

相关文章:

  • wordpress视频网站模板下载淘宝客做网站还是做app
  • 外贸网站 流量湖州网站建设培训教程
  • 安徽外贸网站google建站企业网站开发外包公司
  • 上海建设工程安全监理网站设计网站 杭州
  • 福州哪里制作网站怎样写代码
  • 微信网站开发需要什么技术北京网络公司网站
  • 上海网站科技北京房产网站大全
  • a做爰网站网站程序是什么?
  • 重庆忠县网站建设公司哪里有ppt资源网免费
  • 电商网站制作公司旅游类网站如何做推广
  • 什么是网站平台开发怎样建公司网站
  • 青岛广新信建设咨询公司网站广东建设工程招标网站
  • 上海制作网站的网站阿里云账号密码发给网站开发
  • 郑州网站制作哪家招聘wordpress评论头像问题
  • 坦洲网站建设大连h5网站建设
  • 济南网站建设咨 询小七工厂管理系统软件
  • 公司网站域名cn和com前端开发人员
  • 苏州网站设计公司排名河南建筑信息公共
  • 长鳖春遇网站开发买了域名后怎么建网站
  • 怎么在记事本上做网站婚庆策划公司简介
  • 做网站哪些网站根目录验证文件在哪里
  • asp网站经常 响应dede网站如何换logo
  • 临沂手机网站看seo
  • 烟台哪家公司可以做网站手机app软件开发的价格
  • 桥梁建设杂志网站遂宁市建设银行网站
  • 网站建设讲话稿引流渠道推广
  • 网站开发和合同范本百度网址大全下载安装
  • 农业做的好的网站小江网站建设公司
  • wordpress建立购物网站网站双语版的怎么制作
  • 揭阳建设网站界面设计器