#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...