windows线程创建
2018-02-07 16:20
190 查看
(本文章旨在个人回顾知识点)
windows系统创建线程:
(当然MFC、QT也有对应创建线程的接口函数)
1、使用windows API CreateThread创建线程:
(不建议使用该接口创建线程)具体原因:http://blog.csdn.net/hkwlg1314/article/details/49429925
2、使用_beginThread创建线程:
①头文件:#include<process.h>
②函数原型:
_CRTIMP uintptr_t __cdecl _beginthread
(
_In_ void (__cdecl * _StartAddress) (void *), //线程调用的函数的起始地址
_In_ unsigned _StackSize,
//新线程的栈大小,0为默认
_In_opt_ void * _ArgList //线程执行函数的参数
);
③返回值为线程句柄
简单列子:
下面内容引用:http://blog.csdn.net/stven_king/article/details/50353628
3、_beginthreadex和_beginthread
(1)_beginthreadex内部会自动调用 _endthreadex.
(2)_beginthread内部会自动调用_endthread.
(3)_endthread内部会自动调用CloseHandle关闭当前Thread内核对象的句柄,所以在用_beginthread 时我们不需要在主线程中调用CloseHandle来关闭子线程的句柄。
(4)_endthreadex相比_endthread而言更安全。它不会自动关闭当前Thread内核对象的句柄。所以在用_beginthreadex时我们需要用CloseHandle来关闭子线程的句柄。
windows系统创建线程:
(当然MFC、QT也有对应创建线程的接口函数)
1、使用windows API CreateThread创建线程:
(不建议使用该接口创建线程)具体原因:http://blog.csdn.net/hkwlg1314/article/details/49429925
2、使用_beginThread创建线程:
①头文件:#include<process.h>
②函数原型:
_CRTIMP uintptr_t __cdecl _beginthread
(
_In_ void (__cdecl * _StartAddress) (void *), //线程调用的函数的起始地址
_In_ unsigned _StackSize,
//新线程的栈大小,0为默认
_In_opt_ void * _ArgList //线程执行函数的参数
);
③返回值为线程句柄
简单列子:
#include <process.h> #include <windows.h> #include <iostream> using namespace std; void threadFun(void* param) { cout << "这是子线程!" << endl; return; } int _tmain(int argc, _TCHAR* argv[]) { HANDLE threadHandle = (HANDLE)_beginthread(threadFun, 0, NULL); if ((HANDLE)-1 == threadHandle) { cout << "创建线程失败!(牛B了你)" << endl; } cout << "这是主线程!" << endl; system("pause"); return 0; }
下面内容引用:http://blog.csdn.net/stven_king/article/details/50353628
3、_beginthreadex和_beginthread
(1)_beginthreadex内部会自动调用 _endthreadex.
(2)_beginthread内部会自动调用_endthread.
(3)_endthread内部会自动调用CloseHandle关闭当前Thread内核对象的句柄,所以在用_beginthread 时我们不需要在主线程中调用CloseHandle来关闭子线程的句柄。
(4)_endthreadex相比_endthread而言更安全。它不会自动关闭当前Thread内核对象的句柄。所以在用_beginthreadex时我们需要用CloseHandle来关闭子线程的句柄。
相关文章推荐
- 【windows线程】线程资源创建与释放
- windows系统中创建线程常用哪几个函数,有什么区别?
- linux创建线程和windows创建线程对比
- windows下线程创建
- windows笔记-创建线程的另一个函数_beginthreadex
- windows笔记-创建线程的另一个函数_beginthreadex
- 条件编译 实现 android和windows上线程创建
- Windows平台的线程——创建和退出
- windows线程创建与线程处理函数
- 在 Windows 7 下如何使用 native c++ 正确创建线程
- 解决Windows 2008无法创建线程问题
- windows 多线程编程 之 线程创建
- C#子线程创建新窗体心得(对Windows窗体控件进行线程安全调用)
- Windows 线程创建方式的比较
- 网络编程(44)—— windows平台下创建线程的四种方法(三) 工作者线程和CWinThread线程类管理
- 封装创建一个windows下线程
- Windows下创建线程的方法_beginThread和CreateThread
- DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘查入消息
- Windows进程通信——创建线程
- 网络编程(43)—— windows平台下创建线程的四种方法(二)之用户界面线程