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

wordpress 建站 linux网站定制开发需要什么资质

wordpress 建站 linux,网站定制开发需要什么资质,企业所得税怎么计算,360免费wifi官网13. 常见锁概念 #xff08;一#xff09;了解死锁 死锁是指在一组进程中的各个进程均占有不会释放的资源#xff0c;但因互相申请被其他进程占有的#xff0c;且不释放的资源#xff0c;而处于的一种永久等待状态 #xff08;二#xff09;死锁四个必要条件 互斥条件…  13. 常见锁概念 一了解死锁 死锁是指在一组进程中的各个进程均占有不会释放的资源但因互相申请被其他进程占有的且不释放的资源而处于的一种永久等待状态 二死锁四个必要条件 互斥条件一个资源每次只能被一个执行流使用请求与保持条件一个执行流因请求资源而阻塞时对已获得的资源保持不放不剥夺条件:一个执行流已获得的资源在末使用完之前不能强行剥夺循环等待条件:若干执行流之间形成一种头尾相接的循环等待资源的关系 二避免死锁 破坏死锁的四个必要条件加锁顺序一致 不是交错申请不同的锁资源避免锁未释放的场景资源一次性分配 14. linux线程同步 一条件变量 当一个线程互斥地访问某个变量时它可能发现在其它线程改变状态之前它什么也做不了为了使抢夺锁资源更公正防止饥饿问题就需要把所有等待锁资源的线程放入一个等待队列直到线程被唤醒 。这种情况就需要用到条件变量 注意 条件变量必须依赖锁 二同步概念 同步在保证数据安全的前提下让线程能够按照某种特定的顺序访问临界资源从而有效避免饥饿问题叫做同步 三条件变量相关函数 条件变量函数 初始化 int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr); 参数 cond要初始化的条件变量 attr条件变量的属性一般设置成NULL 销毁 int pthread_cond_destroy(pthread_cond_t *cond) 参数要销毁的条件变量函数 等待条件满足 int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex); 参数 cond要在这个条件变量上等待 mutex互斥量 注意 参数中有互斥量是因为实现同步与互斥需要先加锁再判断判断也是访问临界资源和加锁保护线程安全对应是否进入等待队列休眠而这个函数里面有互斥量是为了把锁资源释放接下来访问临界资源的顺序是按照队列里面的顺序进行的前提是线程被唤醒 大概代码思路 pthread_mutex_lock(mutex); // 加锁 pthread_cond_wait(cond); //放入等待队列 pthread_mutex_unlock(mutex); //解锁 注意 唤醒可以由其它线程去唤醒如主线程三个函数的顺序不要更换解锁和等待都不是原子操作 唤醒等待 int pthread_cond_broadcast(pthread_cond_t *cond); 唤醒队列中的所有线程 int pthread_cond_signal(pthread_cond_t *cond); 按顺序唤醒队列中的一个线程 注意 唤醒之后的线程需要申请锁资源唤醒的时候可能出现唤醒错误的情况。比如在生产者消费者模型中多生产者多消费者容易出现这种错误唤醒了多个生成者并且消费者此时也是属于唤醒状态导致生产者和生产者之间消费者和生产者之间竞争同一把锁锁最后的分配可能导致临界资源访问条件不满足唤醒之后拿到锁资源的线程有可能这个时候的访问条件不满足但依然会执行后面的代码出现错误 正确代码思路 pthread_mutex_lock(mutex); // 加锁 while... ... //判断访问资源的条件是否成立 { pthread_cond_wait(cond); //放入等待队列 } pthread_mutex_unlock(mutex); //解锁 注意 判断用while是为了保证线程被唤醒(出了等待队列)并且竞争到了锁资源后,再一次判断资源条件是否成立才能决定后面的代码能否执行 15. 生产者消费者模型 一使用生产者消费者模型的原因 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯而通过阻塞队列来进行通讯 生产者生产完数据之后不用等待消费者处理直接扔给阻塞队列消费者不找生产者要数据而是直接从阻塞队列里取 阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力这个阻塞队列就是用来给生产者和消费者解耦的 二生产者消费者模型优点 解耦支持并发支持忙闲不均 三基于BlockingQueue的生产者消费者模型 BlockingQueue 在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于当队列为空时从队列获取元素的操作将会被阻塞直到队列中被放入了元素当队列满时往队列里存放元素的操作也会被阻塞直到有元素被从队列中取出 四对生产者消费者模型的总结 1. 有三种关系 生成者和生成者之间的关系互斥生产者和消费者之间的关系互斥同步消费者和消费者之间的关系互斥 2. 有两者角色 生产者和消费者 3. 有一种交易场所 特定结构的内存空间 16. POSIX信号量 POSIX信号量和 SystemV信号量作用相同都是用于同步操作达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步 17. 基于环形队列的生产消费模型 一了解基于环形队列的生产消费模型 环形队列采用数组模拟用模运算来模拟环状特性 判断队列是否为空或者为满我们交给信号量去处理 注意 信号量的本质是一个计数器用来描述临界资源的数目这里不把临界资源当成一个整体而是很多份多个线程并发访问临界资源中的不同份临界资源是否就绪的判断是在临界区之外的和前一个生产消费模型区分开来在申请信号量的时候就已经间接在做判断了这一步是预定操作即预定成功则整个临界资源必有一份资源是属于预定成功的线程的 二基于环形队列的生产消费模型的原理 18. 线程池 一了解线程池 线程池: 一种线程使用模式 线程过多会带来调度开销进而影响缓存局部性和整体性能。而线程池维护着多个线程提前开辟好的等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用还能防止过分调度 池化计数 线程会用到池化技术以空间换时间大致操作C为例现在C类内创建线程创建的线程当作类内成员变量再利用原生线程去实现生产者消费者模型 注意 在类内创建时若线程执行的函数也是类内函数会出现错误因为执行的函数传参只有一个void*,而类内函数会多一个this指针所以该执行函数必须是静态的若执行函数是静态的同样会出现一个问题即静态成员函数无法访问非静态成员变量没有this指针),所以执行函数的参数void*必须是this指针通过穿过来的this指针访问非静态成员变量 二线程池的应用场景 需要大量的线程来完成任务且完成任务的时间比较短。因为单个任务小而任务数量巨大 但对于长时间的任务,线程池的优点就不明显了对性能要求苛刻的应用比如要求服务器迅速响应客户请求接受突发性的大量请求但不至于使服务器因此产生大量线程的应用。突发性大量客户请求在没有线程池情况下将产生大量线程虽然理论上大部分操作系统线程数目最大值不是问题短时间内产生大量线程可能使内存到达极限 三线程池示例 创建固定数量线程池循环从任务队列中获取任务对象获取到任务对象后执行任务对象中的任务接口 19. 线程安全的单例模式 一什么是单例模式 单例模式是一种 经典的, 常用的, 常考的 设计模式这个类的对象只允许创建一个 二什么是设计模式 针对一些经典的常见的场景, 给定了一些对应的解决方案, 这个就是 设计模式 三单例模式的特点 某些类, 只应该具有一个对象(实例), 就称之为单例在很多服务器开发场景中, 经常需要让服务器加载很多的数据 (上百G) 到内存中. 此时往往要用一个单例的类来管理这些数据 四饿汉实现方式和懒汉实现方式 举例类比洗完的例子 饿汉方式 吃完饭, 立刻洗碗, 这种就是饿汉方式. 因为下一顿吃的时候可以立刻拿着碗就能吃饭 懒汉方式 吃完饭, 先把碗放下, 然后下一顿饭用到这个碗了再洗碗, 就是懒汉方式 注意: 懒汉方式最核心的思想是 延时加载. 从而能够优化服务器的启动速度(在准备进程启动时需要把一些数据加载到内存这一个过程的时间少) 饿汉方式 代码实现 template typename T class Singleton { static T data; public: static T* GetInstance() { return data; } }; data 是静态类内成员会在进程启动之前早就创建好而不是等到启动进程时再去创建 懒汉模式 代码实现 template typename T class Singleton { static T* inst; public: static T* GetInstance() { if (inst nullptr) { inst new T(); } return inst; } }; template typename T T* SingletonT:: inst nullptr; inst指针是要等待使用的时候所指向的内容才会在堆上开辟新空间 五懒汉方式实现单例模式(线程安全版本) 代码 static phread_mutex_t lock PTHREAD_MUTEX_INITIALIZER; template typename T class Singleton { static T* inst; // 需要设置 volatile 关键字, 否则可能被编译器优化. public: static T* GetInstance() { if (inst NULL) //这一次的判断可以提高效率使得没有进入第二个判断的线程直接执行非临界资源的代码 { lock.lock(); // 使用互斥锁, 防止多个线程进入第二个判断保证多线程情况下也只调用一次 new if (inst NULL) { inst new T(); } lock.unlock(); }return inst; } };T* SingletonT:: inst nullptr; 注意代码不是完整的 lock()unlock()底层都是用原生线程库封装了 20. STL , 智能指针和线程安全 一常见问题 STL中的容器是否是线程安全 不安全 原因 STL 的设计初衷是将性能挖掘到极致, 而一旦涉及到加锁保证线程安全, 会对性能造成巨大的影响. 而且对于不同的容器, 加锁方式的不同, 性能可能也不同(例如hash表的锁表和锁桶). 因此 STL 默认不是线程安全. 如果需要在多线程环境下使用, 往往需要调用者自行保证线程安全. 智能指针是否是线程安全 对于 unique_ptr, 由于只是在当前代码块范围内生效, 因此不涉及线程安全问题.对于 shared_ptr, 多个对象需要共用一个引用计数变量, 所以会存在线程安全问题. 但是标准库实现的时候考虑到了这个问题, 基于原子操作(CAS)的方式保证 shared_ptr 能够高效, 原子的操作引用计数. 二其他常见的各种锁 悲观锁在每次取数据时总是担心数据会被其他线程修改所以会在取数据前先加锁读锁写锁行锁等当其他线程想要访问数据时被阻塞挂起乐观锁每次取数据时候总是乐观的认为数据不会被其他线程修改因此不上锁。但是在更新数据前会判断其他数据在更新前有没有对数据进行修改。主要采用两种方式版本号机制和CAS操作CAS操作当需要更新数据时判断当前内存值和之前取得的值是否相等。如果相等则用新值更新。若不等则失败失败则重试一般是一个自旋的过程即不断重试。自旋锁是否采用自旋锁取决于临界资源访问的时间的长短时间短可以采用自旋锁即线程不挂起一直申请所资源 21. 读者写者问题 读写锁 在编写多线程的时候有一种情况是十分常见的有些公共数据修改的机会比较少相比较改写它们读的机会反而高的多。 读写锁可以专门处理这种多读少写的情况 注意写和写竞争写和读竞争且同步读和读共享资源读锁优先级高 相关函数 初始化 int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,const pthread_rwlockattr_t *restrict attr); 销毁 int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); 加锁和解锁 int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); //写与写竞争 int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); //读与写竞争 int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); 代码部分 void * reader(void * arg) //读端 { char *id (char *)arg; while (1) { pthread_rwlock_rdlock(rwlock); if () //判断 { pthread_rwlock_unlock(rwlock); break; } pthread_rwlock_unlock(rwlock); } return nullptr; }void * writer(void * arg) //写端 { char *id (char *)arg; while (1) { pthread_rwlock_wrlock(rwlock); if () //判断条件 { pthread_rwlock_unlock(rwlock); break; }} return nullptr; } 中间一些过程省略了 底层实现伪代码 int reader_count 0; mutex_t rlock,wlock; 读端 lock(rlock) reader_count; if(reader_count 1) //第一个竞争到所资源的读端 {lock(wlock); //写段不能访问 } unlock(rlock)lock(rlock); reader_count--; if(reader_count 0)//一开始一批读端的最后一个 {unlock(wlock); //此时读端可以竞争 } unlock(rlock);写端 lock(wlock); // ... 写入 unlock(wlock);
文章转载自:
http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn
http://www.morning.ghxkm.cn.gov.cn.ghxkm.cn
http://www.morning.ghccq.cn.gov.cn.ghccq.cn
http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn
http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn
http://www.morning.btnmj.cn.gov.cn.btnmj.cn
http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn
http://www.morning.ndhxn.cn.gov.cn.ndhxn.cn
http://www.morning.gtjkh.cn.gov.cn.gtjkh.cn
http://www.morning.yggdq.cn.gov.cn.yggdq.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.clpdm.cn.gov.cn.clpdm.cn
http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn
http://www.morning.srbmc.cn.gov.cn.srbmc.cn
http://www.morning.qfplp.cn.gov.cn.qfplp.cn
http://www.morning.knczz.cn.gov.cn.knczz.cn
http://www.morning.hcgbm.cn.gov.cn.hcgbm.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.ftmly.cn.gov.cn.ftmly.cn
http://www.morning.dpbgw.cn.gov.cn.dpbgw.cn
http://www.morning.tfcwj.cn.gov.cn.tfcwj.cn
http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn
http://www.morning.plzgt.cn.gov.cn.plzgt.cn
http://www.morning.khtjn.cn.gov.cn.khtjn.cn
http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn
http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn
http://www.morning.zlchy.cn.gov.cn.zlchy.cn
http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn
http://www.morning.zhffz.cn.gov.cn.zhffz.cn
http://www.morning.kpbgp.cn.gov.cn.kpbgp.cn
http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn
http://www.morning.bklkt.cn.gov.cn.bklkt.cn
http://www.morning.hhboyus.cn.gov.cn.hhboyus.cn
http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn
http://www.morning.zfkxj.cn.gov.cn.zfkxj.cn
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn
http://www.morning.rbrhj.cn.gov.cn.rbrhj.cn
http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn
http://www.morning.mqxzh.cn.gov.cn.mqxzh.cn
http://www.morning.rfwrn.cn.gov.cn.rfwrn.cn
http://www.morning.lsxabc.com.gov.cn.lsxabc.com
http://www.morning.bpmtq.cn.gov.cn.bpmtq.cn
http://www.morning.wrqw.cn.gov.cn.wrqw.cn
http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn
http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn
http://www.morning.jfnlj.cn.gov.cn.jfnlj.cn
http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn
http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.nftzn.cn.gov.cn.nftzn.cn
http://www.morning.tfcwj.cn.gov.cn.tfcwj.cn
http://www.morning.rxkl.cn.gov.cn.rxkl.cn
http://www.morning.fnpmf.cn.gov.cn.fnpmf.cn
http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn
http://www.morning.yydeq.cn.gov.cn.yydeq.cn
http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.tgtwy.cn.gov.cn.tgtwy.cn
http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.ghphp.cn.gov.cn.ghphp.cn
http://www.morning.hwnnm.cn.gov.cn.hwnnm.cn
http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn
http://www.morning.xkyfq.cn.gov.cn.xkyfq.cn
http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn
http://www.morning.mzgq.cn.gov.cn.mzgq.cn
http://www.morning.srhqm.cn.gov.cn.srhqm.cn
http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn
http://www.morning.eronghe.com.gov.cn.eronghe.com
http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn
http://www.morning.tndxg.cn.gov.cn.tndxg.cn
http://www.morning.ptzf.cn.gov.cn.ptzf.cn
http://www.morning.rbkgp.cn.gov.cn.rbkgp.cn
http://www.morning.mszls.cn.gov.cn.mszls.cn
http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn
http://www.morning.ychoise.com.gov.cn.ychoise.com
http://www.morning.cbchz.cn.gov.cn.cbchz.cn
http://www.tj-hxxt.cn/news/242446.html

相关文章:

  • 网站排名诊断昆山网站
  • 无锡网站建设哪家专业婚纱摄影网站建设大概多少钱
  • 做网页难吗廊坊首位关键词优化电话
  • 做招聘网站需要什么人员金华市有网站建设最低价
  • 如何设定旅游网站seo核心关键词ps最好用的素材网站
  • php模板网站在线可以做翻译的网站吗
  • 中山网站制作网页电商网站建设会计分录
  • 免费制作网站方案室内设计网站免费素材
  • 新闻营销发稿平台百度广告优化
  • 烟台网站建设方案书咕叽网 wordpress
  • 北京网站怎么建设购物网站 英文介绍
  • 做高端品牌生产商的网站南山做网站的
  • 山西怀仁建设银行佛山网站优化公司
  • php 免费装修网站注册一个商标多少钱
  • 网站管理有哪些扬中新网网
  • 个人网站申请空间企业seo排名
  • 网站建设公司长春专业设计网站有哪些
  • 微信商城网站案例展示网站有标题
  • 利于优化的网站装潢设计师培训
  • 河南网站排名优化免费网页空间到哪申请
  • 电子商务网站建设调查分析wordpress怎么打删除线
  • 做购物网站需要多少钱wordpress 主题破解版
  • 模板网站难做seodz仿网站头部
  • 泸州网站建设唐网互联邢台房产信息网58同城
  • 如何在自己网站做解析api西安看个号网络科技有限公司
  • 萧山建站网络营销推广公司哪家好
  • 课程的网站建设黄石网站建设价格
  • 关于建设教体局网站的申请公众号官方
  • 搜狐三季度营收多少网站关键词优化多少钱
  • 网站解析不过来wordpress建站教程百科