UNPv2第八章 讀寫鎖

2021-07-11 11:21:58 字數 992 閱讀 5595

pthread_rwlock_rdlock()用來獲取讀出鎖,如果相應的讀出鎖已經被某個寫入者占有,那麼就阻塞呼叫執行緒。

pthread_rwlock_wrlock()用來獲取乙個寫入鎖,如果相應的寫入鎖已經被其它寫入者或者乙個或多個讀出者占有,那麼就阻塞該呼叫執行緒;

pthread_rwlock_unlock()用來釋放乙個讀出或者寫入鎖。函式原型如下:

#include

int pthread_rwlock_rdlock(pthread_rwlock_t *rwptr);

int pthread_rwlock_wrlock(pthread_rwlock_t *rwptr);

int pthread_rwlock_unlock(pthread_rwlock_t *rwptr);

這三個函式若呼叫成功則返回0,失敗就返回錯誤碼。要注意的是其中獲取鎖的兩個函式的操作都是阻塞操作,也就是說獲取不到鎖的話,那麼呼叫執行緒不是立即返回,而是阻塞執行。有些情況下,這種阻塞式的獲取所得方式可能不是很適用,所以,接下來引入兩個採用非阻塞方式獲取讀寫鎖的函式pthread_rwlock_tryrdlock()和pthread_rwlock_trywrlock(),非阻塞方式下獲取鎖的時候,如果不能馬上獲取到,就會立即返回乙個ebusy錯誤,而不是把呼叫執行緒投入到睡眠等待。函式原型如下:

#include

int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwptr);

int pthread_rwlock_trywrlock(pthread_rwlock_t *rwptr);

同樣地,這兩個函式呼叫成功返回0,失敗返回錯誤碼。

#include

int pthread_cancel(pthread_t thread);

傳送終止訊號給thread執行緒,如果成功則返回0,否則為非0值。傳送成功並不意味著thread會終止。

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...

第八章 字典

d 空字典 d 這就是字典 d dict.fromkeys a b d dict zip keyslist,valslist d dict name bob age 22 建立字典的函式 d name 通過索引key獲取對應的value d.keys 返回d字典物件所有key,返回乙個列表 d.va...