fork 程序 pthread create執行緒

2021-05-25 00:04:39 字數 1310 閱讀 8715

introduction

details

乙個程序就相當於乙個主線程。

fork乙個程序與create乙個執行緒的區別:

fork程序:子程序複製父程序的程序環境。父程序結束不會影響子程序的執行。程序切換複製程序環境。

create執行緒:子執行緒共享父執行緒的執行緒環境。執行緒(乙個主線程下的多個執行緒)切換不複製環境,所以執行緒執行快,省去了複製環境的時間。主線程執行結束,子執行緒的執行就無意義了。

子執行緒返回主線程的方法:

1.主線程等待子執行緒執行結束

2.用訊號,比如說用主線程有乙個全域性變數 p=1,子執行緒有一 while(p) 一直在無限執行,這是主線程 p = 0,while(p) 子執行緒退出。

乙個程序 create了幾個執行緒,程序fork(),這是fork出的子程序不能複製父執行緒的執行緒,也就是說,fork出來的子程序只複製父現成的執行環境。

執行緒是乙個執行體。

程序是執行環境+執行體。

ulimit -a 顯示程序環境的屬性

core file size (blocks, -c) unlimited

data seg size (kbytes, -d) unlimited

file size (blocks, -f) unlimited

max locked memory (kbytes, -l) 4

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 7168

virtual memory (kbytes, -v) unlimited

為什麼建立的執行緒數是有限的?

因為主線程的執行緒環境是有限的,預設10m,每產生乙個子執行緒,從棧區分配記憶體 200k的大小給子執行緒,所以執行緒的大小是可以改變的,當然 從棧區分配的記憶體是可以改小的。

修改環境path:在/home/hailong/.bash_profile

path的作用,比如說在任何目錄下都可以使用vi,ls等命令,是因為已經把vi.ls的程式完整路徑記錄在path裡,系統會自動在path裡查詢需要執行的程式後執行。 可以把經常用到程式路徑新增到path裡,就可以在任何路徑下 輸入程式名,程式就能執行。

fork程序建立

fork建立子程序,fork函式返回兩個值,當為0時,則認為是子程序 塊執行區域,而不為0則是父程序 塊執行區域。我們需要知道的是,fork子程序可以與父程序共享部分程序上下文,而與此不同的是execl函式,一旦開始執行到execl函式時,啟動被呼叫的函式,後面的 則不再執行,而是直接執行呼叫的程式...

fork程序相關

include include include include include int main int argc,char argv if pid 0 else if pid 0 return 0 列印如下。i am father i am son i am father i am son i a...

fork建立程序

1.程序的建立 fork 函式是建立子程序的函式,在主函式中呼叫fork會產生乙個子程序 列印出來的結果是 if語句是條件語句但卻兩個都列印了,兩個條件都滿足,也就是說兩個都執行,但卻不是一條執行流,那麼可以得出肯定還有乙個程序在列印另乙個。都記得fork 之後有兩個程序,乙個父程序,乙個子程序,父...