阅读量:81
在C++中,wait()函数通常与线程同步相关,用于让当前线程暂停执行一段时间或者等待某个条件成立
- 包含头文件:
#include // 对于Unix/Linux系统
#include // 对于Windows系统
- 使用
wait()函数:
- 在Unix/Linux系统中,可以使用
wait()或waitpid()函数来等待子进程结束。例如:
#include
#include
#include
#include
int main() {
pid_t pid = fork();
if (pid == 0) { // 子进程
std::cout << "子进程运行中..." << std class="hljs-built_in">sleep(5); // 模拟子进程运行5秒
std::cout << "子进程结束。" << std class="hljs-keyword">else if (pid > 0) { // 父进程
std::cout << "父进程等待子进程结束..." << std class="hljs-built_in">wait(NULL); // 等待子进程结束
std::cout << "子进程已结束。" << std class="hljs-keyword">else {
std::cerr << "创建子进程失败。" << std class="hljs-keyword">return 1;
}
return 0;
}
- 在Windows系统中,可以使用
WaitForSingleObject()或WaitForMultipleObjects()函数来等待线程或事件对象。例如:
#include
#include
int main() {
HANDLE hThread = CreateThread(NULL, 0, NULL, NULL, 0, NULL); // 创建一个新线程
if (hThread == NULL) {
std::cerr << "创建线程失败。" << std class="hljs-keyword">return 1;
}
std::cout << "主线程等待子线程结束..." << std class="hljs-built_in">WaitForSingleObject(hThread, INFINITE); // 无限期等待子线程结束
std::cout << "子线程已结束。" << std class="hljs-built_in">CloseHandle(hThread); // 关闭线程句柄
return 0;
}
请注意,这些示例仅用于演示wait()函数的基本用法。在实际项目中,你可能需要根据具体需求使用更复杂的同步机制,如互斥锁(mutex)、条件变量(condition variable)等。