1.共享記憶體 訊號量同步
比如說a程序位址空間和b程序位址空間他們的物理記憶體是一樣的
2.訊息佇列
傳送訊息時,必須要指定訊息型別,型別值是long,>=,如果訊息佇列放滿了,則傳送訊息msgsnd()會阻塞
獲取訊息時,必須指定訊息型別,型別為0,則說明不區分訊息型別,一般型別值是 >=1,訊息隊列為空,擇msdrcv()會阻塞
3.執行緒
程序:乙個正在執行的程式
執行緒:程序內部的一條執行路徑,執行序列
pthread_cerate()建立的是乙個核心級的執行緒
pthread_exit()退出執行緒
pthread_join()合併執行緒,等待執行緒結束
編譯連線時指定執行緒庫的名字
gcc -o main mian.c -lphread
4.執行緒同步方法:訊號量 互斥鎖 條件變數 讀寫鎖
5.保證執行緒安全的措施:
1)同步
2)使用執行緒安全的函式(可重入函式)
6.現成的實現:
1)使用者級
2.核心級
3)組合(混合)
7.檢視程序中的執行緒命令
ps -l
ps -elf
8.多執行緒程式,無論建立了多少個執行緒,那麼,fork後,子程序都只有一條;執行路徑就是fork所在的哪條路徑
9.父程序建立的互斥鎖mutex在fork後,子程序也會複製乙份,子程序中鎖的狀態和父程序在複製時的狀態相同
可以使用pthread_atfork()設定,使鎖的狀態在子程序中變得清晰
我們可以挑沒人用鎖的時候,再fork的執行可能被推遲或者延遲
多執行緒基礎知識
建立乙個序列佇列,該佇列中從方的都是要依次執行的任務,dispatch queue serial 表示序列佇列的標示 dispatch queue t serialqueue dispatch queue create serial dispatch queue serial 建立乙個並行佇列,並行...
多執行緒 基礎知識
1 建立執行緒 extends thread implements runnable 啟動執行緒 threadl類的start 執行緒完成 1 run 方法執行完成 2 丟擲乙個未處理的異常導致執行緒的提前結束 2 執行緒的狀態 新建立 執行緒被建立,但是沒有呼叫start方法 可執行 runnab...
簡單的多執行緒
多個執行緒之間是搶cpu的關係有隨機性 主線程的名字 main 子執行緒的名字 從thread 0開始命名 setname可以命名 start 方法,來開啟執行緒,繼而實現run方法的自動呼叫.手動呼叫run的時候,他失去了任務區的功能,變成了乙個普通的方法.執行緒和任務分離 哪個執行緒需要工作,就...