㈠ linux線程的幾種結束方式
Linux線程的幾種結束方式
Linux創建線程使用
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg)
1
2
Linux線程的幾種結束方式:
調用pthread_exit(exit_code),exit_code為線程退出的狀態代碼。同一進程下的其他線程可以通過pthread_join(exit_code)來使用。
函數start_routine使用return返回,與調用pthread_exit()作用相同。
線程被取消pthread_cancel()。
同一進程中的其他線程調用了exit(),,或者主線程從main函數返回。
㈡ linux 線程問題
主要理解在fork函數。
你可以參考
http://hi..com/huifeng00/blog/item/c7e9a4c6c5e6eac739db49b6.html
這會產生分支,
fork會產生一個子進程。
根據fork的返回值的不同運行不同的代碼。
在子進程返回值是0,而父進程就是調用這個函數的進程中返回的則是進程的ID也就是>0。
所以在子進程中執行
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,NULL);
pthread_join(tid,NULL);
printf("CHILD:value=%d",value);
這個子進程會啟動一個線程
void*runner(void*param){
value=5;
pthread_exit(0);
}
讓value=5;
所以輸出
CHILD:value=5;
而父進程則執行
wait(NULL);
printf("PARENT:value=%d",value);
由於wait()所以它會暫停父進程,等待子進程結束。
子進程結束後,然後父進程運行輸出
PARENT:value=0
至於為什麼是0,因為子進程和父進程的數據是在內存中各有一份的。
子進程只是改變了它那份。父進程中還是0.
㈢ linux線程如何運行
pthread_create執行後,如果執行成功會生成一個子線程 也就是現在有兩個線程同時運行
父線程還會繼續執行後面的代碼 直到結束
子線程則開始執行thread函數體里的代碼了 別的不執行
pthread_join會按照父線程執行順序 到它了就會執行 該函數的作用是阻塞等待一個線程執行完畢
在你的代碼里 不一定在子線程執行3次後才啟動 也可能子線程沒有執行呢 父線程就執行到pthread_join了 然後阻塞等待子線程
如果你想讓pthread_join在子線程3次執行後才啟動 可以讓父線程sleep下 不過子線程執行完了 你再執行pthread_join也就沒有什麼意義了
不懂再問
㈣ linux怎麼查看線程
1查看物理cpu個數 grep 'physical id' /proc/cpuinfo | sort -u 2查看核心數量 grep 'core id' /proc/cpuinfo | sort -u | wc -l 3查看線程數 grep 'processor' /proc/cpuinfo | sort -u | wc -l 英特爾最新推出了第六代酷睿產品
㈤ Linux到底有沒有線程
線程只是一個概念,Linux視線程和進程是一樣的,所以它只需要一個「進程」的概念,Windows視線程為進程生成的更小粒度單位。
所以其實大家只是看待問題角度不同,不代表Linux「沒有」線程
㈥ linux終端中如何查看用了多少個線程
1、top -H
top命令是linux下常用的性能分析工具,也是一個強大的系統檢測工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器
-H : Threads toggle是否顯示線程,為on時將顯示所有線程
2、ps xH
ps查看當前用戶的活動進程
-H: Show threads as if they were processes
查看所有存在的線程。
3、ps -mp <PID>
-m: Show threads after processes
查看某個進程的線程
㈦ linux如何進行線程管理
方法一:PS
在ps命令中,「-T」選項可以開啟線程查看。下面的命令列出了由進程號為<pid>的進程創建的所有線程。
1.$ ps -T -p <pid>
「SID」欄表示線程ID,而「CMD」欄則顯示了線程名稱。
方法二: Top
top命令可以實時顯示各個線程情況。要在top輸出中開啟線程查看,請調用top命令的「-H」選項,該選項會列出所有Linux線程。在top運行時,你也可以通過按「H」鍵將線程查看模式切換為開或關。
1.$ top -H
要讓top輸出某個特定進程<pid>並檢查該進程內運行的線程狀況:
$ top -H -p <pid>
㈧ Linux的線程怎麼關閉
殺死線程 所在的進程就可以,
ps aux | grep 進程名
kill -TERM 進程號
如果你指的寫程序, 那就參考 man pthread_exit
㈨ linux 並行 線程選多少合適
具體問題具體分析,如果你主要是做純計算(比如數學運算,物理計算等),那麼線程數應該等於cpu核心數。如果主要是io操作(即需要訪問硬體外設),一般來說線程數的提升並不能提高運行速度。 如果是 計算 + IO, 一般來說線程數應該大於cpu核心數。
總的來說,除了第一種,後兩種情況都應該實際測試看效果。
㈩ linux中的線程有哪幾種狀態
就緒:線程分配了CPU以外的全部資源,等待獲得CPU調度
執行:線程獲得CPU,正在執行
阻塞:線程由於發生I/O或者其他的操作導致無法繼續執行,就放棄處理機,轉入線程就緒隊列
掛起:由於終端請求,操作系統的要求等原因,導致掛起。