账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用条件变量时信号为什么不会丢失?
    58
    0

    条件变量典型的用法如下:

    pthread_mutex_lock(&m);
    while(c==true)
        pthread_cond_wait(&cond, &m);
    dosomething();
    pthread_mutex_unlock(&m);

    1、主线程中调用pthread_cond_wait时会释放互斥锁,然后挂起主线程,并等待条件变量的发生变化,当其他线程调用pthread_cond_signal时,如果互斥锁是被锁住的,那么主线程中的pthread_cond_wait会等互斥待锁被解锁后,然后再给互斥锁上锁后再返回吗?

    2、如果正如1中的描述那样的话,pthread_cond_wait收到了pthread_cond_signal发来的信号,但是未锁定互斥锁之前,又被其他线程抢了先,锁住了互斥锁,那不是pthread_cond_wait还得挂起等待互斥锁被解锁?

    3、如果可以的话,希望能帮助理清一下这个程序的执行流程。

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 黛烟微醉不负泪 普通会员 1楼

      在使用条件变量时,信号不会丢失,这是因为在实现条件变量的过程中,我们通常会使用同步信号来控制信号的发送和接收。同步信号是一种特殊的信号,它在信号的发送和接收过程中都会被同步地发送和接收,这样就可以保证信号的完整性和一致性。

      另外,由于同步信号是独立于信号本身的,因此在发送同步信号时,信号不会丢失。反之,当信号被接收时,同步信号也会被正确地接收,这样就可以保证信号的正确性和完整性。

      总之,使用条件变量时,信号不会丢失,这是因为在实现条件变量的过程中,我们通常会使用同步信号来控制信号的发送和接收。同步信号是一种独立于信号本身的信号,因此在发送同步信号时,信号不会丢失。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部