在C++中,wait()
函數通常與線程同步相關,用于讓當前線程暫停執行一段時間或者等待某個條件成立
#include <unistd.h> // 對于Unix/Linux系統
#include <windows.h> // 對于Windows系統
wait()
函數:wait()
或waitpid()
函數來等待子進程結束。例如:#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == 0) { // 子進程
std::cout << "子進程運行中..." << std::endl;
sleep(5); // 模擬子進程運行5秒
std::cout << "子進程結束。" << std::endl;
} else if (pid > 0) { // 父進程
std::cout << "父進程等待子進程結束..." << std::endl;
wait(NULL); // 等待子進程結束
std::cout << "子進程已結束。" << std::endl;
} else {
std::cerr << "創建子進程失敗。" << std::endl;
return 1;
}
return 0;
}
WaitForSingleObject()
或WaitForMultipleObjects()
函數來等待線程或事件對象。例如:#include <iostream>
#include <windows.h>
int main() {
HANDLE hThread = CreateThread(NULL, 0, NULL, NULL, 0, NULL); // 創建一個新線程
if (hThread == NULL) {
std::cerr << "創建線程失敗。" << std::endl;
return 1;
}
std::cout << "主線程等待子線程結束..." << std::endl;
WaitForSingleObject(hThread, INFINITE); // 無限期等待子線程結束
std::cout << "子線程已結束。" << std::endl;
CloseHandle(hThread); // 關閉線程句柄
return 0;
}
請注意,這些示例僅用于演示wait()
函數的基本用法。在實際項目中,你可能需要根據具體需求使用更復雜的同步機制,如互斥鎖(mutex)、條件變量(condition variable)等。