温馨提示×

BeginThreadEx 能否传递参数给线程函数

小樊
86
2024-10-14 18:56:09
栏目: 编程语言

BeginThreadEx函数可以传递参数给线程函数。BeginThreadEx函数的原型如下:

DWORD WINAPI ThreadFunction(LPVOID lpParam);

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

在这个函数中,lpParameter参数是一个指向要传递给线程函数的参数的指针。当线程函数被创建时,这个参数将被传递给线程函数。

下面是一个简单的示例,演示了如何使用BeginThreadEx函数传递参数给线程函数:

#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;
}

在这个示例中,我们创建了一个名为ThreadFunction的线程函数,它接受一个LPVOID类型的参数。在main函数中,我们使用BeginThreadEx函数创建一个新线程,并将message字符串作为参数传递给线程函数。当新线程运行时,它将打印出传递给它的参数。

0