溫馨提示×

C++中beginthreadex()如何向線程函數傳遞參數

c++
小億
137
2023-10-23 10:03:18
欄目: 編程語言

在C++中,可以使用lambda函數來傳遞參數給beginthreadex()函數。

下面是一個示例代碼:

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

// 線程函數
DWORD WINAPI MyThread(LPVOID lpParam)
{
    int n = *(int*)lpParam; // 從參數中獲取值
    std::cout << "Thread started with parameter: " << n << std::endl;

    // 線程邏輯代碼...

    return 0;
}

int main()
{
    int n = 10; // 參數值

    HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, MyThread, &n, 0, NULL); // 傳遞參數給線程函數

    // 等待線程結束
    WaitForSingleObject(hThread, INFINITE);

    std::cout << "Thread finished" << std::endl;

    return 0;
}

在上面的代碼中,使用lambda函數來調用beginthreadex()函數,并將參數n傳遞給線程函數MyThread()。在線程函數中,使用強制類型轉換將lpParam參數轉換為int類型指針,并讀取參數值。

請注意,強制類型轉換可能會導致類型不匹配或訪問非法內存,所以在實際應用中需要小心使用。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女