繁体   English   中英

C多线程:如果所有线程可以同时访问它,那么读锁(pthread_rwlock_rdlock)有什么优势?

[英]C multithreading: What is the advantage of a Read Lock (pthread_rwlock_rdlock) if all threads can access it simultaneously?

我对这个线程问题不感兴趣:\\

我想,写锁定的行为就像一个while是等待一个全局变量的确认。 喜欢:

/* pthread_rwlock_wrlock */

    while (is_blocked) {
        /* waiting */
    }
    is_blocked = true;

    (writing code...)

/* pthread_rwlock_unlock */
    is_blocked = false;

那是对的吗? 以及读锁如何工作? 如果是共享的,为什么要使用?

信息:

pthread_rwlock_rdlock()–获取共享的读取锁

pthread_rwlock_wrlock()–获得排他的写锁

读取锁定的目的是阻止写入程序。

  • 如果没有写锁,读者可以获得
  • 如果根本没有锁,那么作家可以获得锁。

都没有一个简单的实现,您建议的实现
例如具有竞争条件,有时会失败。

读取受保护的资源时,您不希望在读取资源时对其进行更改。

读锁阻止写锁!

这意味着在您拥有读锁的同时,试图获得写锁的某人将不得不等到您以及拥有读锁的其他任何人完成读操作。 由于阅读不会改变资源,因此可以让多个阅读器同时阅读。

请注意,在此上下文中,读取操作的定义是任何不会更改受保护资源状态的操作。 因此,出于读/写锁定的目的,如果受保护的资源是流(例如stdin或套接字),则从该资源进行读取将更改其状态,因此需要写锁定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM