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

贵阳市建设局网站深圳电商网站制作公司

贵阳市建设局网站,深圳电商网站制作公司,wordpress博客实例,天津建设工程信息网网上报名线程同步协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。数据混乱的原因资源共享(独享资源则不会)调度随机(意味着数据访问会出现竞争)线程间缺乏必要同步机制锁的使用建议锁!对公共数据进行保护。所有线程【应该】在…

线程同步

        协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。

数据混乱的原因

  1. 资源共享(独享资源则不会)

  2. 调度随机(意味着数据访问会出现竞争)

  3. 线程间缺乏必要同步机制

锁的使用

        建议锁!对公共数据进行保护。所有线程【应该】在访问公共数据前先拿锁再访问。但,锁本身不具备强制性。

主要应用函数:

    pthread_mutex_init       函数:创建锁

    pthread_mutex_destory    函数:初始化

    pthread_mutex_lock       函数:加锁

    pthread_mutex_trylock    函数:

    pthread_mutex_unlock     函数:解锁

以上5个函数的返回值都是:成功返回0,失败返回错误号

、、、、、、、、、、、

pthread_mutex_t 类型,其本质是一个结构体。为简化理解,应用时可忽略其实现细节,简单当成整数看待

pthread_mutex_t mutex;变量mutex只有两种取值:0,1

、、、、、、、

使用mutex(互斥量、互斥锁)一般步骤:

    pthread_mutex_t 类型。

    1. pthread_mutex_t lock;  创建锁

    2  pthread_mutex_init; 初始化      1

    3. pthread_mutex_lock;加锁      1-- --> 0

    4. 访问共享数据(stdout)   

    5. pthrad_mutext_unlock();解锁     0++ --> 1

    6. pthead_mutex_destroy;销毁锁

、、、、、、、、、、、

int pthread_mutex_init(pthread_mutex_t *restrict mutex,

const pthread_mutexattr_t *restrict attr)

这里的restrict关键字,表示指针指向的内容只能通过这个指针进行修改

restrict关键字:

    用来限定指针变量。被该关键字限定的指针变量所指向的内存操作,必须由本指针完成。

初始化互斥量:

       pthread_mutex_t mutex;

       1. pthread_mutex_init(&mutex, NULL);              动态初始化。

       2. pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;  静态初始化。

例子:借助互斥锁管理共享数据实现同步

未加锁

加锁

互斥锁使用技巧

注意事项:

       尽量保证锁的粒度, 越小越好。(访问共享数据前,加锁。访问结束【立即】解锁。)

       互斥锁,本质是结构体。 我们可以看成整数。 初值为 1。(pthread_mutex_init() 函数调用成功。)

       加锁: --操作, 阻塞线程。

       解锁: ++操作, 唤醒阻塞在锁上的线程。

       try锁:尝试加锁,成功--。失败,返回。同时设置错误号 EBUSY

死锁

是使用锁不恰当导致的现象:

       1. 对一个锁反复lock。

       2. 两个线程,各自持有一把锁,请求另一把。

第一种情况,反复加锁;

第二种情况,1先拿A锁,2先拿B锁,1又要拿B,2又要拿A,就都在这阻塞等待。

读写锁

特性:

  1. 读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。
  2. 读写锁是“读模式加锁”时, 如果线程以读模式对其加锁会成功;如果线程以写模式加锁会阻塞。
  3. 读写锁是“读模式加锁”时, 既有试图以写模式加锁的线程,也有试图以读模式加锁的线程。那么读写锁会阻塞随后的读模式锁请求。优先满足写模式锁。读锁、写锁并行阻塞,写锁优先级高

        读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。写独占、读共享。

        读写锁非常适合于对数据结构读的次数远大于写的情况。

、、、、、、、、、、、、

    锁只有一把。以读方式给数据加锁——读锁。以写方式给数据加锁——写锁。

    读共享,写独占。

    写锁优先级高。(两个写,一个读,等两个写结束再读)

    相较于互斥量而言,当读线程多的时候,提高访问效率

    pthread_rwlock_t  rwlock;

    pthread_rwlock_init(&rwlock, NULL);

    pthread_rwlock_rdlock(&rwlock);    try

    pthread_rwlock_wrlock(&rwlock);    try

    pthread_rwlock_unlock(&rwlock);

    pthread_rwlock_destroy(&rwlock);

以上函数都是成功返回0,失败返回错误号。

pthread_rwlock_t 类型    用于定义一个读写锁变量

pthread_rwlock_t  rwlock

例子

3个线程不定时 "全局资源,5个线程不定时 "同一全局资源

http://www.dtcms.com/wzjs/599267.html

相关文章:

  • 郑州市网站建设做一个网站建设需要多少钱
  • 网站开发怎么在页面上调用高德地图显示位置html5 后台网站模板
  • 绵阳网站建设制作网站开发技术是
  • 甘肃省城乡与建设厅网站首页公司做网站哪个好
  • 农村小伙创业做网站做网站销售门窗怎么做
  • 深圳网站建设价格是多少钱WordPress京东淘宝主题
  • 淘宝网站是语言用什么做的简易动漫网站模板
  • 长沙营销型网站建设费用烟台商城app开发
  • 北京平台网站建设价位旧域名找新域名的方法
  • 手机网站生成app软件企业网站搭建教程
  • 东莞企业网站网站关键词排名优化方法
  • 穆棱市住房和城乡建设局网站企业年报网上申报系统
  • 怎么自己做网站的推广wordpress 手机版菜单
  • 建设银行人力资源系统网站怎么进潜力的网站设计制作
  • 给网站公司做网站系统下载网站源码
  • 长沙手机网站公司网站制作公司官网南京
  • 自适应网站开发资源张家港市凤凰镇建设局网站
  • 做内容网站赚钱吗网站建站网站建站
  • 怎么给网站做备份呢自适应网站的代表
  • 建设网站出什么科目域名备案需要网站搭建完成吗
  • 关于单位建设网站的申请wordpress发帖
  • 做牛津布面料在哪个网站找客户佛山网站建设在哪找
  • 网站建设维护实训总结怎样用自己的pid做搜索网站
  • 百度容易收录哪些网站散文网站模板
  • wordpress怎么做两个语言网站各大城市网站哪里做
  • 桌面软件开发跟网站开发那个网站设计师图片
  • 寿光做网站的公司宁晋网站建设网络公司
  • 晋江wap站是什么意思北京网站维护
  • 做网站横幅技巧高端网站设计公司排名
  • 遵义本地网站简单网站设计模板