91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

setevent在C++多線程編程中的應用

c++
小樊
84
2024-08-27 13:16:12
欄目: 編程語言

setevent 是 Windows API 中的一個函數,用于設置一個事件對象的狀態為已觸發

以下是一個簡單的示例,展示了如何在 C++ 多線程編程中使用 SetEvent

#include<iostream>
#include<windows.h>
#include<process.h>

HANDLE hEvent;

unsigned int __stdcall threadFunction(void* arg) {
    std::cout << "Thread is waiting for event..."<< std::endl;
    WaitForSingleObject(hEvent, INFINITE);
    std::cout << "Event is signaled! Thread is running."<< std::endl;
    return 0;
}

int main() {
    hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    if (hEvent == NULL) {
        std::cerr << "Failed to create event object."<< std::endl;
        return 1;
    }

    uintptr_t threadId = _beginthreadex(NULL, 0, threadFunction, NULL, 0, NULL);
    if (threadId == 0) {
        std::cerr << "Failed to create thread."<< std::endl;
        CloseHandle(hEvent);
        return 1;
    }

    Sleep(2000); // Wait for 2 seconds
    std::cout << "Setting event..."<< std::endl;
    SetEvent(hEvent);

    WaitForSingleObject((HANDLE)threadId, INFINITE);
    CloseHandle(hEvent);
    CloseHandle((HANDLE)threadId);

    return 0;
}

在這個示例中,我們首先創建了一個事件對象 hEvent。然后,我們創建了一個新線程,該線程將等待事件被觸發。接下來,主線程休眠 2 秒鐘,然后調用 SetEvent 函數來觸發事件。當事件被觸發時,等待線程將繼續執行。最后,我們關閉所有的句柄并退出程序。

需要注意的是,這個示例僅適用于 Windows 平臺。如果你需要在其他操作系統上實現類似的功能,可以考慮使用條件變量、互斥鎖等同步原語。

0
渭南市| 江陵县| 贵溪市| 奉贤区| 宁海县| 上饶市| 正宁县| 安陆市| 永康市| 贞丰县| 东台市| 周至县| 天津市| 东海县| 罗定市| 巧家县| 拉孜县| 永昌县| 芜湖市| 东港市| 徐水县| 宝坻区| 安西县| 吉首市| 大冶市| 吉水县| 阿城市| 宁河县| 巩义市| 镶黄旗| 石泉县| 柘荣县| 班玛县| 宁国市| 子洲县| 淮北市| 天峨县| 崇义县| 乡城县| 清河县| 苍山县|