• Linux:30线程同步


    缘起

    内容

    • 互斥量:帮助线程同步对共享资源的使用
    • 条件变量:允许线程相互通知共享变量的状态发生了变化

    30.1、保护对共享变量的访问:互斥量

    • 线程的优势:通过全局变量来共享信息。【代价就是不会同时修改同一变量,所以有了临界区的概念】
    • mutex,是(mutual exclusion)的缩写。

    30.1.1、静态分配的互斥量

    • pthread_mutex_t类型的变量,静态分配就是不用函数,直接pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;

    30.1.2、加锁和解锁互斥量

    • int pthread_mutex_lock(pthread_mutex_t *mutex);
    • int pthread_mutex_unlock(pthread_mutex_t *mutex);
      • Returns 0 on success, or a positive error number on error。
    • 有pthread_mutex_trylock()和pthread_mutex_timedlock()

    30.1.3、互斥量的性能

    30.1.4、互斥量的死锁

    30.1.5、动态初始化互斥量

    • int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
      • Returns 0 on success, or a positive error number on error。
    • int pthread_mutex_destroy(pthread_mutex_t *mutex);
      • Returns 0 on success, or a positive error number on error。

    30.1.4、互斥量的属性

    30.1.4、互斥量类型

    30.2、通知状态的改变:条件变量(Condition Variable)

    30.2.1、由静态分配的条件变量

    • pthread_cond_t类型

    30.2.2、通知和等待条件变量

    30.2.3、测试条件变量的判断条件(predicate)

    30.2.4、示例程序:连接任意已终止线程

    30.2.5、经由动态分配的条件变量

    • int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
      • Returns 0 on success, or a positive error number on error。

    30.3、总结

    30.4、练习

    履历&总结

    • 内容参考《Unix系统编程手册》chap30的框架,20201229看了第1遍,然后总结了个框架,代码啥的也没写,目前还没确定代码的用途。
  • 相关阅读:
    谷歌浏览器禁用缓存
    web项目中各种路径的获取
    visual studio 2015常用快捷键
    Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
    JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
    OAuth学习总结
    今日技术碎片
    碎片化的一天
    软件架构简史
    竞态条件概念
  • 原文地址:https://www.cnblogs.com/fewolflion/p/14209297.html
Copyright © 2020-2023  润新知