美文网首页
信号量(一)

信号量(一)

作者: Baby小猪 | 来源:发表于2016-08-24 15:36 被阅读57次

    信号量机制是一种卓有成效的进程同步工具。

    1.整形信号量

    仅有两个标准的院子操作wait(S)和signal(S)

    wait(S){
        while (S<=0);
        S--;
    }
    
    signal(S){
        S++;
    }
    

    2.记录型信号量

    typdef struct{
        int value;
        struct process_control_block *list;
    }semaphore;
    

    相应的wait(S)和Signal(S)可描述如下

    wait(semaphore * S){
        S->value--;
        if(S->value<0)block(S->list);
    }
    
    signal(S){
        S->value++;
        if(S->value<=0)wakeup(S->list);
    }
    

    如果S->value的初值为1,则表示只允许一个进程访问临街资源,此时的信号量转换为互斥信号量,用于进程互斥。

    AND信号量

    应用场景:当进程需要多个共享资源。
    原理:将进程所需要的所有资源一次性的全部分配给进程,待进程使用完成之后再一起释放。

    相关文章

      网友评论

          本文标题:信号量(一)

          本文链接:https://www.haomeiwen.com/subject/mnhosttx.html