使用信号量实现读写锁

使用信号量实现读写锁,第1张

struct rwlock

{

    sem_t read

    sem_t write

    int reads

}

void RWLock_Init(rwlock &lock)

{

    sem_init(lock.read, 0, 1)

    sem_init(lock.write, 0, 1)

    lock.reads = 0

}

void Acquir_read_lock(rwlock &lock)

{

    sem_wait(&lock.read)

    ++lock.reads

    if(lock.reads == 1)

    {

        sem_wait(&lock.write)

    }

    sem_post(&lock.write)

}

void acquir_read_unlock(rwlock &lock)

{

    sem_wait(&lock.read)

    --lock.reads

    if(lock.reads == 0)

    {

        sem_post(&lock.write)

    }

    sem_post(&lcok.read)

}

void acquir_write_lock(rwlock &lock)

{

    sem_wait(&lock.write)

}

void acquir_write_unlock(rwlock * lock)

{

    sem_post(&lock.write)

}

1.声明信号量sem_t sem1

2.初始化信号量sem_init(&sem1,0,1)

3.sem_post和sem_wait函数配合使用来达到线程同步

4.释放信号量int sem_destroy (sem_t *sem1)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/449046.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-01
下一篇2023-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存