createthread _beginthread
时间: 2024-03-29 19:32:11 浏览: 107
beginthread_和_CreateThread
`_beginthread` 和 `CreateThread` 都是用于创建线程的函数,但它们在使用上有一些区别。
`_beginthread` 是C/C++标准库中的函数,用于创建一个新的线程。它的原型如下:
```c++
uintptr_t _beginthread(void (__cdecl *start_address)(void*), unsigned stack_size, void* arglist);
```
其中,`start_address` 是线程函数的地址,`stack_size` 是线程堆栈的大小,`arglist` 是传递给线程函数的参数。`_beginthread` 函数会创建一个新的线程,并在该线程中执行指定的线程函数。
而 `CreateThread` 是Windows API中的函数,用于创建一个新的线程。它的原型如下:
```c++
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
```
其中,`lpThreadAttributes` 是线程的安全属性,`dwStackSize` 是线程堆栈的大小,`lpStartAddress` 是线程函数的地址,`lpParameter` 是传递给线程函数的参数,`dwCreationFlags` 是线程创建的标志,`lpThreadId` 是用于接收新线程ID的指针。`CreateThread` 函数会创建一个新的线程,并在该线程中执行指定的线程函数。
两者的区别主要在于:
- `_beginthread` 是C/C++标准库中的函数,而 `CreateThread` 是Windows API中的函数。
- `_beginthread` 创建的线程会自动终止,而 `CreateThread` 创建的线程需要手动调用 `ExitThread` 函数来终止。
阅读全文