c++

如何正确使用C++中的_beginthreadex

小樊
81
2024-10-09 19:10:14
栏目: 编程语言

_beginthreadex是C++标准库中的一个函数,用于创建一个新的线程。这个函数的原型如下:

unsigned long WINAPI _beginthreadex(
  void *arg, 
  unsigned int stackSize, 
  void (WINAPI *threadfunc)(void *), 
  void *arg2, 
  unsigned int creationFlags, 
  unsigned long *threadId
);

参数解释:

下面是一个简单的示例,展示如何使用_beginthreadex创建一个新线程:

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

DWORD WINAPI ThreadFunction(void* arg) {
    std::cout << "Hello from the new thread!" << std::endl;
    return 0;
}

int main() {
    unsigned long threadId;
    if (_beginthreadex(NULL, 0, ThreadFunction, NULL, CREATE_SUSPENDED, &threadId) == 0) {
        std::cout << "Failed to create thread." << std::endl;
        return 1;
    }

    std::cout << "Thread created with ID: " << threadId << std::endl;

    // Resume the thread
    ResumeThread(GetCurrentThread(), 0);

    // Wait for the thread to finish (optional)
    WaitForSingleObject(GetCurrentThread(), INFINITE);

    return 0;
}

在这个示例中,我们定义了一个名为ThreadFunction的线程函数,它只是简单地输出一条消息。然后,在main函数中,我们使用_beginthreadex创建一个新线程,并将其挂起。接着,我们恢复线程的执行,并等待它完成(这一步是可选的)。

0
看了该问题的人还看了