中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++ wait在哪使用

c++
小樊
81
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
延津县| 桦川县| 崇左市| 临江市| 扬州市| 玉林市| 获嘉县| 黄石市| 长丰县| 河北省| 崇阳县| SHOW| 霍邱县| 饶阳县| 龙州县| 绵阳市| 巴彦淖尔市| 肇东市| 夏津县| 谷城县| 文山县| 台南市| 肃南| 崇礼县| 罗平县| 香格里拉县| 故城县| 额敏县| 高雄市| 贡嘎县| 阿克苏市| 敦煌市| 贵港市| 上虞市| 娄烦县| 米脂县| 永福县| 阿拉善右旗| 翼城县| 泉州市| 元谋县|