在 Linux 系統程式設計中,執行緒相較於進程具有顯著優勢:
POSIX 執行緒函數定義於 <pthread.h>,核心 API 包含:
| 函數 | 用途 |
|---|---|
| pthread_create | 建立新執行緒 |
| pthread_join | 等待執行緒結束並回收資源 |
| pthread_mutex_lock/unlock | 互斥鎖操作 |
| pthread_cond_wait/signal | 條件變數同步 |
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&mutex);
// 臨界區操作共享資料
pthread_mutex_unlock(&mutex);
適用於「讀多寫少」場景,允許多執行緒並發讀取,寫入時獨佔。
配合互斥鎖實現「等待-通知」模式,避免忙等待浪費 CPU。
頻繁建立/銷毀執行緒會產生額外開銷。採用執行緒池預先建立固定數量執行緒,任務佇列分發工作,實現執行緒複用。推薦使用成熟庫 Boost.Threadpool 或 C++17 std::thread 搭配自定義任務佇列實現。
std::lock_guard、std::unique_lock)確保鎖正確釋放std::lock 同時獲取多個鎖註:本文為系列第四篇,前三篇分別涵蓋基本概念、I/O 模型、進程控制。