三种线程同步机制
    •互斥锁
    •信号量
    •条件变量
 
pthread_t thread_id;
主要函数
pthread_create(),pthread_exit(),pthread_join(),pthread_cancel()
pthread_mutex_t mutex;
互斥锁主要包括下面的基本函数:
  互斥锁初始化:pthread_mutex_init()
  互斥锁上锁:pthread_mutex_lock()
  互斥锁判断上锁:pthread_mutex_trylock()
  互斥锁解锁:pthread_mutex_unlock()
  消除互斥锁:pthread_mutex_destroy()
 
信号量
  操作系统中所用到的PV原子操作,广泛用于进程或线程间的同步与互斥
    •本质上是一个非负的整数计数器,被用来控制对公共资源的访问
  PV原子操作:对整数计数器信号量sem的操作
    •一次P操作使sem减一,而一次V操作使sem加一
    •进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限
  –当信号量sem的值大于等于零时,该进程(或线程)具有公共资源的访问权限
  –当信号量sem的值小于零时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0为止
 
PV操作主要用于线程间的同步和互斥
  互斥,几个线程只设置一个信号量sem
  同步,会设置多个信号量,安排不同初值来实现它们之间的顺序执行
 
信号量函数
  sem_init() 创建一个信号量,并初始化它
  sem_wait()和sem_trywait(): P操作,在信号量大于零时将信号量的值减一
    •区别: 若信号量小于零时,sem_wait()将会阻塞线程,sem_trywait()则会立即返回
  sem_post(): V操作,将信号量的值加一同时发出信号来唤醒等待的线程
  sem_getvalue(): 得到信号量的值
  sem_destroy(): 删除信号量

linux 线程备忘的更多相关文章

  1. linux 指令备忘

    linux 指令备忘 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和"..& ...

  2. 常用linux命令备忘

    备忘: 关闭防火墙:# systemctl stop firewalld 查看防火墙状态:#  systemctl status firewalld 停止防火墙:#  systemctl disabl ...

  3. Linux iptables 备忘

    iptables主要通过存储在linux内核中的一个个表来控制IP包的.可以想象成excel表格.你可以自定义所需的iptables表.不过已经内置了三张队列表. filter 这是默认的表,包含了内 ...

  4. Linux指令备忘

    这是之前初学Linux时做下的笔记,根据现在的熟悉程度增删了一些,也是做上备份查看,希望能让有用的童鞋参考一二. //将使用到的内容输出到屏幕,仅检查语法 sh -nx scripts.sh //输出 ...

  5. 实用收藏Linux命令备忘

    系统操作 #使用shutdown命令马上重启系统[root@H32 ~]# shutdown –r now #使用shutdown命令马上关闭系统[root@H32 ~]# shutdown –h n ...

  6. Linux 命令备忘(持续更新中……)

    Linux命令 grep 1. 使用grep 筛选内容,多条件筛选用 grep - E "条件1|条件2" (满足条件1或条件2的均展示) 2. grep '条件3'|grep - ...

  7. linux命令备忘

    yum info softname 查看安装包信息 yum install softname 安装包名 安装 nginx http://jingyan.baidu.com/article/aa6a2c ...

  8. linux 命令 备忘

    openssl rand -base64 32 随机数 date | md5sum data 日期 cal 日历 man -f man sync 数据同步写入磁盘 shutdown reboot ha ...

  9. linux 进程备忘

    进程间同步互斥方式: 1.管道pipe(亲属进程适用),命名管道fifopipe 2.信号量 3.共享内存配合信号量

随机推荐

  1. MemCached高级缓存

    MemCached高级缓存配置 Memcache相关介绍: memcache 是一个高性能的分布式的内存对象缓存系统,它能够存储各种各样的的数据,包括图片,视频,文件等等.缓存功能. DB.数据源-- ...

  2. ActiveRecord 模式杂谈

    ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性.配合遵循的命名和配置惯例,能够很大程度的快速实现模 ...

  3. php错误处理和php异常处理机制

    php错误处理  当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误.  开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试  运行阶段:我们不要让程序输出任何一种错误报 ...

  4. webuploader文件上传问题总结

    webuploader百度的一个很好的上传文件插件: 选择它的原因: 1.浏览器兼容性好,支持IE8,这是我最主要的,好多上传插件都不支持: 2.跨域访问,因为我的上传需要到图片服务器上,这就需要跨域 ...

  5. iTween visual Editor 0.6.1

    首先添加ITween Path编辑路径(无需路径运动的动画可忽略该步骤): 然后为需要添加动画的物体添加ITween Event脚本: 若是物体沿特定路径运动,则选中Path,并选择一个路径:  若想 ...

  6. New ipad install Metasploit(New ipad 安装Metasploit)

    Title:New ipad install Metasploit(New ipad 安装Metasploit) --2012-09-19 11:35 越狱以后,Ssh或者终端Ipad,把屏幕锁定最好 ...

  7. mongodb工具

    可视化管理工具 http://www.mongovue.com/ mongodb use case http://www.mongodb.org/about/applications/ mongodb ...

  8. Windows开发中一些常用的辅助工具

    经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具.   (1) Spy++ 相信windows开发中应该没人不知道这个工具, 我们常用 ...

  9. JavaScript 实现数组的foreach

    Array.prototype.forEach = function (action) { for (var i = 0; i < this.length; i++) { action(this ...

  10. 【细说Java】Java的重写与隐藏

    重写与隐藏,有些书上或介绍上可能名称不一样,但都大差不差.以前只了解重写,隐藏也听说过,但没有详细了解过,趁现在,整理一下这两方面的内容吧. 首先,先说一下概念方面的东西. 重写 重写:子类继承了父类 ...