POSIX 線程 (pthread) 是 UNIX/Linux 系統多線程編程的標準 API。核心函數:
pthread_create:創建線程。pthread_join:等待線程結束。pthread_mutex_lock/unlock:互斥鎖同步。pthread_cond_wait/signal:條件變量同步。pthread_attr_t:屬性設置(棧大小、分離狀態等)。Xcode Help 搜索 "POSIX" → "Using POSIX Threads" 可見支持的函數與屬性。iOS 完整支持 pthread,但建議優先使用更高層的 GCD (Grand Central Dispatch) 或 NSOperationQueue。
含義:OpenMP 未找到,建議啟用 pthread 作為並行後端。
解決:
1. 安裝 OpenMP(如 libomp-dev)。
2. 或在 CMake 中啟用 pthread:set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread") 並 find_package(Threads REQUIRED),鏈接 Threads::Threads。
3. MathGL 等庫可通過宏控制後端:-DMATHGL_USE_PTHREAD=ON。
// 工作隊列 + 條件變量 + 互斥鎖
queue<Task> tasks;
mutex mtx;
cond_var cv;
bool stop = false;
void worker() {
while (true) {
unique_lock<mutex> lock(mtx);
cv.wait(lock, []{ return !tasks.empty() || stop; });
if (stop && tasks.empty()) return;
Task t = tasks.front(); tasks.pop();
lock.unlock();
t.execute();
}
}
pthread_join 導致主線程提前退出、資源洩漏。pthread_attr_setstacksize。