| 維度 | Linux (POSIX) | Windows (Win32) |
|---|---|---|
| 基本調度單元 | 進程 | 線程 |
| 進程含義 | 運行中的程序實例,獨立地址空間 | 應用程序容器,掛載線程、資源 |
| 線程含義 | 輕量級進程 (LWP),共享地址空間 | 進程內執行路徑,共享數據段 |
| 創建接口 | fork() / clone() / pthread_create() | CreateThread() |
| 數據共享 | 默認隔離,需顯式 mmap(MAP_SHARED) 或 shm | 同進程線程默認共享全局/堆/棧 |
| fork 語義 | 複製父進程地址空間 (COW),子進程從 fork 返回處繼續 | 無 fork,創建線程指定入口函數 |
fork,依賴 fork 的 Unix 守護進程、預分叉模型難以直接移植fork()+COW 極快,適合短生命周期任務;Win32 線程創建/銷毀開銷較小,適合高併發長連接strace/ltrace/gdb 進程級;Win32 需線程感知調試器// 父進程
int shmid = shmget(key, size, IPC_CREAT|0600);
void *shared = shmat(shmid, 0, 0);
if (fork() == 0) {
thread_proc(shared); // 子進程跑線程邏輯
exit(0);
}
Linux「重進程、輕線程、顯式共享」,Win32「輕進程、重線程、隱式共享」。理解差異是跨平台高併發架構設計的前提。