執行緒
1.像每個程序有乙個程序id一樣,每個執行緒也有乙個執行緒id。程序id在整個系統中是唯一的,程序id相同,但執行緒id不同,執行緒id只在它所屬的程序環境有效
2.每個程序只有乙個控制線程即main執行緒
3.執行緒建立時並不能保證哪個執行緒會先執行:是新建立的執行緒還是呼叫執行緒
4.主線程需要休眠,如果不休眠,就可能先退出,這樣在新執行緒有機會執行之前整個程序可能就已經終止了
5.如果程序中的任意執行緒呼叫了exit,_exit,或者_exit,那麼整個程序會終止。呼叫pthread_exit不終止整個程序
6.pthread_join一直阻塞,直到指定的執行緒呼叫pthread_exit,或者返回
7.如果執行緒處於分離狀態,那麼pthread_join呼叫就會失敗
8.同一程序的執行緒的棧有會被其他執行緒棧覆蓋的可能性,可以使用全域性變數或堆變數
9.如果鎖的粒度太粗,就會出現多執行緒阻塞等待相同的鎖,如果太細,會影響系統效能
10.讀寫鎖可以有三種狀態:讀模式下加鎖狀態,寫模式下加鎖狀態,不加鎖狀態。一次只有乙個執行緒可以占有寫模式的讀寫鎖,但是多個執行緒可以同時占有讀模式的讀寫鎖
11.因為是在while迴圈檢查條件,所以不會出現問題:執行緒醒來,發現隊列為空,然後返回繼續等待。如果**不能容忍這種競爭,就要在向執行緒傳送訊號時占有互斥量
12.cond_wait的作用就是等待訊號通知
unix 環境高階程式設計 讀書筆記
unix環境高階程式設計 讀書筆記 第8章exit和 exit區別 exit會直接進入核心,不會關閉io流。程序基本控制函式還有 wait,fork,exec。atexit 程式正常退出時呼叫,如果因為signal退出則不能呼叫。功能 註冊函式可以完成一些清理工作,比如全域性log類,可以不設定析構...
unix環境高階程式設計 讀書筆記
檔案 unix支援在不同程序之間共享開啟的檔案。核心使用三種資料結構表示開啟的檔案 原子操作 一般而言,原子操作指的是由多步組成的操作。如果該操作原子的執行,要麼執行完所有步,要麼一步也不執行,不可能只執行所有步驟的乙個子集。2 注意 原子操作函式 pread,pwrite pread 相當於呼叫r...
讀書筆記之UNIX環境高階程式設計 16
網路ipc 套接字 1.套接字描述符在unix系統上是使用檔案描述符實現的,許多處理檔案描述符的函式都可以處理套接字描述符 2.對於sock stream套接字,應用程式意識不到報文界限,因為套接字提供的是位元組流服務。這就意味著從套接字讀出資料時,它也許不會返回所有由傳送程序所寫的位元組數。最終可...