我在這個線程問題小白:\C多線程:如果所有線程都可以同時訪問,讀鎖(pthread_rwlock_rdlock)的優點是什麼?
我想,寫鎖定的行爲就像一個while
是等待一個全局變量的確認。像:
/* pthread_rwlock_wrlock */
while (is_blocked) {
/* waiting */
}
is_blocked = true;
(writing code...)
/* pthread_rwlock_unlock */
is_blocked = false;
這是正確的嗎? Read Lock如何工作?如果它是共享的,爲什麼使用?
信息:
pthread_rwlock_rdlock() - 獲取一個共享讀鎖
pthread_rwlock_wrlock() - 當你讀一個受保護的資源,你不希望它得到一個排它寫鎖定
概念上它可能是相似的。但實際上,它不會是一個繁忙的等待循環,只是因爲這是CPU週期的巨大浪費,可以做一些有用的事情。在鎖被釋放之前,等待的線程將不會被安排執行,然後其中一個將被某種策略選中。 – StoryTeller