執行緒開發中常遇到 PO 級別的 Bug

2021-07-05 00:20:59 字數 796 閱讀 2501

// 建立執行緒

nsthread *thread = [[nsthread alloc] initwithtarget:self selector:@selector(run) object:nil];

// 啟動執行緒

[thread start];

執行緒池:存放執行緒的池子! 分為:

可排程執行緒池: cpu 只會排程可排程執行緒池中的執行緒! 下面藍色狀態都位於可排程執行緒池中! '就緒' ,'執行'!

不可排程執行緒池: 下面紅色狀態都位於不可排程執行緒池中! "新建" ,"阻塞" ,"死亡"!

執行緒狀態:

start            cpu排程當前執行緒           執行結束/強制退出(exit)

"新建" ---------->'就緒' -----------------> '執行' -----------------------> "死亡";

cpu 排程其他執行緒           cpu排程當前執行緒

'執行' ------------------> '就緒'-----------------> '執行'

呼叫 sleep/等待互斥鎖            sleep時間到/得到互斥鎖

'執行' -----------------------> "阻塞"-----------------------> '就緒';

執行緒執行結束或者強制退出(exit)就進入 "死亡" 狀態;

"注意:一旦執行緒停止(死亡),就不可以再次開啟任務!程式會掛掉: crash!

平時開發中,要特別關注 crash! :"po"級別的 "bug";

多執行緒開發中遇到的問題

1.開發專案 大體框架如下 1.主線程接收命令,放進佇列 1 中.命令分 2 種 本地執行命令 網路傳輸命令 2.處理執行緒 從佇列 1 中取出依次取出命令進行處理 分兩種情況 1.取到本地命令,直接執行,並立即將結果放入佇列 2 中,使用訊號量 通知主線程 接收處理結果 2.網路傳輸命令,本地立即...

python中常遇到的坑

這篇文章記錄學習python過程中遇到的坑 逐步更新 一 python 引用型別賦值 引用型別賦值的時候一定要採用拷貝的方式,不可直接賦值 例如 list1 1,2,3,4 list2 list list2 list1 此時如果對list2進行操作,list1也會受到影響 如果不想list1,lis...

效能統計中常遇到的網路術語

aligment error 一般指ethernet幀裡位元組的部分bit位被丟失了,會造成fcs錯的情況,更明確的說法是位元組對齊錯誤.byte aligment error,即接收到的內容為非整數倍的位元組數.因為有部分 bit丟掉了,而乙太網收發規範是以整數倍的位元組作為基礎的,如64 151...