zoukankan      html  css  js  c++  java
  • 后端程序员之路 42、Semaphore

    前面学习了Pthreads,了解了线程和线程同步,而同步这个东西,与信号量是密不可分的。
    下面讨论的主要是Pthreads里的semaphore.h,而不是sys/sem.h

    【Linux】线程同步之信号量同步 - 江南烟雨 - 博客频道 - CSDN.NET
    http://blog.csdn.net/xiajun07061225/article/details/8467853

    # 基本结构和概念
    - sem_t 信号量
    - P(sv):如果sv的值大于零,就给它减1;如果它的值为零,就挂起该进程的执行
    - V(sv):如果有其他进程因等待sv而被挂起,就让它恢复运行,如果没有进程因等待sv而挂起,就给它加1

    # 操作函数
    - sem_init、sem_destroy 创建和销毁
    - sem_post、sem_post_multiple 发送操作 P
    - sem_trywait、sem_wait、sem_timedwait 等待操作 V
    - sem_open 创建或打开有名信号量
    - sem_close 关闭有名信号量
    - sem_unlink 从系统中删除信号量
    - sem_getvalue 测试信号量,取到的valp指向一个数,正数则为信号量当前值,负数则为等待的线程数

    在上篇BlockingQueue里,对Semaphore有以下使用:
    sem_t _consumer_sem;
    sem_init(&_consumer_sem, 0, 0);
    sem_destroy(&_consumer_sem);
    sem_post(&_consumer_sem);
    sem_wait(&_consumer_sem);
    int ret = sem_trywait(&_consumer_sem);

  • 相关阅读:
    新汉诺塔
    车的放置
    [NOI 2015]荷马史诗
    [JSOI2008]星球大战
    分组
    星空
    [Luogu4175][CTSC2008]网络管理Network
    [Luogu2617]Dynamic Rankings(整体二分)
    2018冬令营赛前停课总结
    [BZOJ2752][HAOI2012]高速公路
  • 原文地址:https://www.cnblogs.com/zapline/p/6755359.html
Copyright © 2011-2022 走看看