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

沈阳做网站有名公司揭阳百度推广优化

沈阳做网站有名公司,揭阳百度推广优化,做网站的是外包公司吗,图书馆网站开发总结目录 ​编辑 一、线程的分离属性 1.1.什么是分离属性 1.2.分离属性相关函数接口 1.初始化线程属性-pthread_attr_init() 2.销毁线程属性-pthread_attr_destory() 3.设置线程属性-pthread_setdetachstate() 1.3.注意 二、互斥锁 2.1.资源 2.2.互斥锁 1.什么是互斥锁 2.互…

目录

​编辑

一、线程的分离属性

1.1.什么是分离属性

1.2.分离属性相关函数接口

        1.初始化线程属性-pthread_attr_init()

        2.销毁线程属性-pthread_attr_destory()

        3.设置线程属性-pthread_setdetachstate()

 1.3.注意

二、互斥锁

2.1.资源

2.2.互斥锁

        1.什么是互斥锁

        2.互斥锁的用途

        3.临界区

 2.3.函数接口 

        1.初始化互斥锁-pthread_mutex_init()

        2.销毁互斥锁-pthread_mutex_destory()

        3.枷锁-pthread_mutex_lock()

        4.解锁-pthread_mutex_unlock()

2.4.注意点

三、死锁

3.1.什么是死锁

3.2.产生死锁的4个必要条件

        1.互斥条件

        2.不剥夺条件

        3.请求保持条件

        4.循环等待条件

3.3.如何避免死锁

        1.加锁顺序保持一致

        2.打破互斥条件、不可剥夺条件(不建议使用)

        3.使用pthread_mutex_trylock替代pthread_mutex_lock      

四、信号量

4.1信号量是什么

4.2.信号量的作用

4.3.函数接口

        1.初始化信号量-sem_init()

        2.销毁信号量-sem-destory()

        3.申请信号量-sem_wait()

        4.释放信号量-sem_post()

 五、总结


一、线程的分离属性

1.1.什么是分离属性

        线程在结束时由操作系统自动回收空间

1.2.分离属性相关函数接口

        1.初始化线程属性-pthread_attr_init()

int pthread_attr_init(pthread_attr_t *attr);功能:初始化线程属性 

        2.销毁线程属性-pthread_attr_destory()

int pthread_attr_destroy(pthread_attr_t *attr);功能:销毁线程属性

        3.设置线程属性-pthread_setdetachstate()

int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);功能:  将线程设置为分离属性 参数:attr:线程属性 detachstate:PTHREAD_CREATE_DETACHED        分离属性PTHREAD_CREATE_JOINABLE         加入属性(默认)

 1.3.注意

        线程使用分离属性后,将不会让进程发生阻塞,从而不会实现进程与线程的同步;

        默认的属性,需要pthread_join(),来回收线程空间,会实现同步;

二、互斥锁

2.1.资源

        资源是有限的,在程序运行过程中,一段代码、一段空间、一个变量、CPU、内存都可以看做资源 

2.2.互斥锁

        1.什么是互斥锁

                是一种资源,当一个线程任务加锁,其余线程任务无法再次加锁,直到解锁后才能加锁;

        2.互斥锁的用途

                 互斥锁主要是用来防止多个线程任务竞争某个资源

        3.临界区

                加锁和解锁中间的代码称为临界代码也称为临界区

 2.3.函数接口 

        1.初始化互斥锁-pthread_mutex_init()

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);功能:初始化互斥锁参数:mutex:互斥锁attr:互斥锁属性 NULL返回值:成功返回0 失败返回-1 

        2.销毁互斥锁-pthread_mutex_destory()

int pthread_mutex_destroy(pthread_mutex_t *mutex);功能:销毁互斥锁参数:mutex:互斥锁返回值:成功返回0 失败返回-1

        3.枷锁-pthread_mutex_lock()

  int pthread_mutex_lock(pthread_mutex_t *mutex);功能:加锁参数:mutex:互斥锁返回值:成功返回0 失败返回-1

        4.解锁-pthread_mutex_unlock()

int pthread_mutex_unlock(pthread_mutex_t *mutex);功能:解锁参数:mutex:互斥锁返回值:成功返回0 失败返回-1

2.4.注意点

        1.互斥锁不能同步,多个任务依然保持异步执行,但是可以解决资源竞争
        2.原子操作最小的一次CPU操作,在执行原子操作时不会切换调度任务

三、死锁

3.1.什么是死锁

         多线程加锁解锁导致多个任务均无法向下执行的状态称为死锁状态简称为死锁  

3.2.产生死锁的4个必要条件

        1.互斥条件

                同一把锁不能被多个线程任务同时锁定

        2.不剥夺条件

                一个线程任务已经锁定了一个资源,不能被其他线程任务抢占,直到它使用完该资源

        3.请求保持条件

                如果没有拿到锁资源一直申请获得锁资源

        4.循环等待条件

                如果没有得到锁资源会一直等待

3.3.如何避免死锁

        1.加锁顺序保持一致

        2.打破互斥条件、不可剥夺条件(不建议使用

        3.使用pthread_mutex_trylock替代pthread_mutex_lock      

                  pthread_mutex_trylock为尝试进行锁操作,若没有锁则不进行锁操作。

四、信号量

4.1信号量是什么

        信号量是一种资源(可以初始化、销毁、申请、释放)

        申请资源数 > 0     申请操作让资源数-1
        资源数 == 0   申请操作会阻塞,直到资源数不为0,申请得到资源后继续向下执行
        释放资源数+1 
        释放操作让资源数+1
 

4.2.信号量的作用

        实现多线程间的同步(同步就是多个线程有一定的执行顺序)

4.3.函数接口

        1.初始化信号量-sem_init()

 int sem_init(sem_t *sem, int pshared, unsigned int value);功能:对信号量的初始化参数:sem:信号量空间首地址pshared:0   线程间共享非0 进程间共享 value:信号量的初始值返回值:成功返回0 失败返回-1

        2.销毁信号量-sem-destory()

 int sem_destroy(sem_t *sem);功能:  信号量的销毁 

        3.申请信号量-sem_wait()

 int sem_wait(sem_t *sem);功能:申请信号量(资源数-1)资源数为0阻塞等待直到有资源申请后继续向下执行

        4.释放信号量-sem_post()

int sem_post(sem_t *sem);功能:释放信号量(资源数+1)

 五、总结

        2024年8月8日,学习的第25天。今天主要是学习了线程间的通信,其中引出了互斥锁、信号量和死锁的知识。总体来说,这块还是比较难的。

        加油!

http://www.yayakq.cn/news/997636/

相关文章:

  • 沈阳seo网站推广网站设计师薪资
  • 做资料分享网站无锡装修公司做网站
  • 网站 稳定性购物商城网站建设公司
  • 免费完整版的网站模板图片外链工具
  • 哪里找做网站的wordpress saharan
  • 手机上自己如何做网站上海广告公司电话
  • 山东网站策划怎么做网络舆情参考
  • 做cpa用单页网站好还是昆明网站的建设
  • 哪个网站推荐做挖机事的9元包邮网站怎么做
  • 长春住房和城乡建设部官方网站app营销策略模板
  • 如何使用微信公众号做网站ae免费模板网站
  • 保山网站建设报价百度景安空间网站
  • 石家庄网站定制模板建站wordpress上传数据
  • 网站建设人员工资山东网站建设费用
  • 我对网站开发的反思网页设计与制作项目教程答案
  • 四川和住房城乡建设厅网站首页下载关键词推广软件
  • 百度网盘做存储网站网络营销推广目的
  • 云南建个网站哪家便宜wordpress微信公众平台开发
  • 衣服商业网站建设策划书tp做网站
  • 做外贸没有网站可以吗id怎样转wordpress
  • 国际物流网站建设各大网站的网址
  • 最新电子产品网站模板朝阳住房和城乡建设厅网站
  • 网站建设分解结构网站开发规划
  • 做阿里巴巴好还是网站好原创文字的网站
  • app和网站开发区别移动端数据可视化
  • 福州哪家网站制作设计高端还实惠画册设计公司网站
  • 成都网站建设门户做自己的网站流量怎么
  • 宿州网站公司重庆的互联网公司
  • 给人做网站赚钱网络营销分销策略是什么
  • 单位网站建设情况汇报域名地址大全