16.1 What's the difference between a thread and a process?
程式Process是程式執行時的一個例項。一個程式是被分配系統資源的獨立單元,每個程式在獨立的地址空間上執行,如果需要使用其他程式的資源,需要使用程式間通訊,包括管道Pipes,檔案Files,套接字Sockets,或者其他形式。
執行緒Thread存在於程式之中並分享程式的資源(包括堆空間)。同一個程式中的多個執行緒分享同一個堆地址。這是和程式區別很大的地方,程式之間不能直接訪問記憶體。每個執行緒仍然有自己的棧,但是其他執行緒可以讀寫堆記憶體。
一個執行緒是一個程式的特殊執行路徑,當一個執行緒修改了程式的資源,其他執行緒能立馬察覺到改變。