zoukankan      html  css  js  c++  java
  • linux信号量

    注意:表述有误! 请以mannul手册为准! 

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

    最近接触到信号量,看手册里有sem_post族函数和semop族函数,不太清楚有什么不同,于是查了一下。请看下图:

    sem_post适用于linux线程间同步;

    semop适用于linux进程间同步。

    这篇文章不错:

    http://www.ibm.com/developerworks/cn/linux/l-ipc2lin2.html#N108DB 

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

    Updated:2012-03-15

    刚才得空,查了一下Linux手册,发觉之前的理解有误。下面将linux的手册页翻译过来:

    #man sem_overview

    POSIX信号量允许在进程和线程间同步它们的动作。
    信号量是一个不小于0的整数,对它可以进行两种操作:对信号量的值加一(sem_post);对信号量的值减一(sem_wait)。如果对一个当前值为0的信号量执行sem_wait操作,将会阻塞直到值大于0.

    有两种形式的信号量:有名信号量,无名信号量。

    有名信号量:
    有名信号量是通过"/somename"的命名形式进行区分的。两个进程可以操作同一个信号量,只需要在sem_open时传递同样的信号量名字。
    新建一个有名信号量或打开一个已存在的有名信号量,需要调用sem_open函数。信号量被打开后,可以使用sem_post,sem_wait进行操作。当一个进程不再使用信号量时,可以调用sem_close来关闭信号量。当所有的进程都不再使用信号量时,可以使用sem_unlink来清除该信号量。

    无名信号量:(基于内存的信号量)
    无名信号量,顾名思义没有名字,存在于某块内存区域,被多线程(线程共享型信号量)或多进程(多进程共享型信号量)共享。线程共享型信号量位于进程中能被所有线程访问的内存区域,例如全局变量。进程共享型信号量必须位于共享内存区域。
    在使用之前,无名信号量必须通过sem_init来初始化,然后可以通过sem_post,sem_wait来进行操作。当信号量不再被使用时,在其所在的内存区域被销毁之前,应该使用sem_destory来销毁该信号量。

    Linux 2.6之前的内核,仅支持无名、线程共享型信号量。在2.6之后的内核,并且glibc提供了NPTL线程实现的系统中,提供了完整的POSIX信号量实现。

    POSIX有名信号量与内核具有相同的声明周期:不再使用有名信号量时,请调用sem_unlink进行删除,否则该信号量将一直存在,直到系统关机。

    使用POSIX信号量的程序必须通过cc -lrt编译选项来连接到real-time实时库:librt。

    在Linux上,有名信号量是通过虚拟文件系统来创建的,通常位于/dev/shm,以sem."somename"的形式命名。 

    ---------------------------------------------------

    关于适用范围:

    sem_post  CONFORMING TO POSIX.1-2001. 

    semop      CONFORMING TO SVr4, POSIX.1-2001.    --------------->在System V和POSIX系统上都可以使用

  • 相关阅读:
    MySQL 日志管理
    nginx 日志分割
    Canvas 动态小球重叠效果
    Canvas制作动态进度加载水球
    js 多张爆炸效果轮播图
    js 多张图片加载 环形进度条
    INSTALL_FAILED_CONFLICTING_PROVIDER
    安卓 文件管理器 各种应用 源码
    android 静音
    android studio 查看大纲
  • 原文地址:https://www.cnblogs.com/chutianyao/p/2344296.html
Copyright © 2011-2022 走看看