溫馨提示×

BeginThreadEx 能否傳遞參數(shù)給線程函數(shù)

小樊
81
2024-10-14 18:56:09
欄目: 編程語言

BeginThreadEx函數(shù)可以傳遞參數(shù)給線程函數(shù)。BeginThreadEx函數(shù)的原型如下:

DWORD WINAPI ThreadFunction(LPVOID lpParam);

HANDLE WINAPI BeginThreadEx(
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  DWORD dwStackSize,
  LPTHREAD_START_ROUTINE lpStartAddress,
  LPVOID lpParameter,
  DWORD dwCreationFlags,
  LPDWORD lpThreadId
);

在這個(gè)函數(shù)中,lpParameter參數(shù)是一個(gè)指向要傳遞給線程函數(shù)的參數(shù)的指針。當(dāng)線程函數(shù)被創(chuàng)建時(shí),這個(gè)參數(shù)將被傳遞給線程函數(shù)。

下面是一個(gè)簡單的示例,演示了如何使用BeginThreadEx函數(shù)傳遞參數(shù)給線程函數(shù):

#include <stdio.h>
#include <windows.h>

DWORD WINAPI ThreadFunction(LPVOID lpParam) {
  printf("Thread function called with parameter: %s\n", (char*)lpParam);
  return 0;
}

int main() {
  char* message = "Hello from the main thread!";
  HANDLE hThread = BeginThreadEx(NULL, 0, ThreadFunction, message, 0, NULL);

  if (hThread == NULL) {
    printf("Failed to create thread.\n");
    return 1;
  }

  WaitForSingleObject(hThread, INFINITE);
  CloseHandle(hThread);
  return 0;
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為ThreadFunction的線程函數(shù),它接受一個(gè)LPVOID類型的參數(shù)。在main函數(shù)中,我們使用BeginThreadEx函數(shù)創(chuàng)建一個(gè)新線程,并將message字符串作為參數(shù)傳遞給線程函數(shù)。當(dāng)新線程運(yùn)行時(shí),它將打印出傳遞給它的參數(shù)。

0