温馨提示×

c++ wait在哪使用

c++
小樊
87
2024-11-24 04:39:43
栏目: 编程语言

在C++中,wait()函数通常与线程同步相关,用于让当前线程暂停执行一段时间或者等待某个条件成立

  1. 包含头文件:
#include <unistd.h> // 对于Unix/Linux系统
#include <windows.h> // 对于Windows系统
  1. 使用wait()函数:
  • 在Unix/Linux系统中,可以使用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;
}
  • 在Windows系统中,可以使用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)等。

0