執行緒控制知識點總結(下)

2021-08-22 10:23:32 字數 1794 閱讀 8245

**:

#include

#include

#include

#include

pthread_key_t key;

void * thread2(void *arg)

void * thread1(void *arg)

int main()

//要注意主線程和執行緒1之間的休眠sleep()關係,如果主線程的休眠時間結束,那麼直接回到主線程

互斥鎖通過鎖機制來實現執行緒間的同步。在同一時刻它通常只允許乙個執行緒執行乙個關鍵部分的**

條件變數是利用執行緒間共享的全域性變數進行同步的一種機制。

主要包括:乙個等待使用資源的執行緒等待「條件變數被設定為真」;另乙個執行緒在使用完資源後「設定條件為真」。

為了保證條件變數可以正確的被修改,使用中需要用到互斥鎖。

**:

#include

.h>

#include

.h>

#include

.h>

pthread_mutex_t mutex;

pthread_cond_t cond;

void *thread1(void *arg)

pthread_cleanup_pop(0);

}void *thread2(void *arg)

}int main()

while(1);

sleep(50);

pthread_exit(0);

}

執行緒是在核心外實現的。訊號與任何執行緒都是非同步的,也就是說訊號到達執行緒的時間是不定的。

如果有多個執行緒可以接收非同步訊號,則只有乙個被選中。如果併發的多個同樣的訊號被送到乙個程序,每乙個將被不同的執行緒處理。如果所有的執行緒都遮蔽該訊號,則這些訊號將被掛起,直到有訊號解除遮蔽來處理他們。

函式執行失敗時,一般都會返回乙個特定的值,但錯誤原因並沒有說明。

標頭檔案errno.h中的變數errno

程式開始執行時,變數errno被初始化為0,許多庫函式在執行過程中遇到錯誤時就會將它設定為相應的錯誤碼。

**:

#include

#include

#include

int main()

else

}

當程式出現錯誤時,可以列印出相應的錯誤提示資訊,以便使用者修改錯誤。

函式strerror和perror可以通過錯誤碼獲取標準的錯誤提示資訊

* streeor ( int errnum ):

函式根據引數errnum提供的錯誤碼獲取乙個描述錯誤資訊的字串。errnum 的值通常就是 errno.

* perror ( const char *message ):

列印錯誤資訊到螢幕或命令列終端,如果引數message是乙個空指標,perror僅僅根據errno列印出對應的錯誤提示資訊。

如果提供乙個非空的值,peeor會把message加在其輸出資訊的前面,會新增乙個冒號和空格將message和錯誤資訊分開。

**:

#include

#include

#include

#include

file *open_file(char *filename)

else }

int main()

OSPF知識點總結(下)

1.dr bdr路由器 基於鏈路而不是基於路由器 dr 指定路由器,所有路由器與他交換路由更新資訊,再有他對鄰居路由傳送更新報文。bdr 備份指定路由器 在dr故障時,bdr發揮dr 的作用 作用 減少鄰接關係的數量,從而減少鏈路狀態資訊,以及路由資訊交換次數,節省頻寬 2.建立鄰居關係的各種狀態 ...

執行緒知識點總結

j a執行緒的兩個特性 可見性和有序性 多個執行緒之間是不能傳遞資料互動的,他們之間的互動只能通過共享變數來實現。在多個執行緒之間共享了count類的乙個物件,這個物件時被建立在主記憶體 堆記憶體 每個執行緒都有自己的工作記憶體 執行緒棧 工作記憶體儲存了主記憶體count物件的乙個副本,當執行緒操...

多執行緒知識點總結

多執行緒的問題主要圍繞3個問題處理 1.原子性,2.可見性,3.有序性 1.原子性,不可被其他執行緒打斷的操作。如read.write sychronized 2.可見性 一條執行緒修改了某值,新值對其他執行緒立即可知 普通變數是通過主記憶體完成多執行緒的共享,因此在多執行緒的情況下,很多髒資料。v...