在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)等。