_beginthreadex、CreateThread、AfxBeginThread的选择

来源:互联网 发布:深圳迈瑞工资待遇知乎 编辑:程序博客网 时间:2024/04/30 10:01
1.  Create/EndThread是Win32方法开始/结束一个线程


  _beginthreadx/_endthreadex是C RunTime方式开始/结束一个线程



  AfxBeginThread在MFC中开始/结束一个线程


2.直接在CreateThread API创建的线程中使用sprintf,malloc,strcat等涉及CRT存储堆操作的CRT库函数是很危险的,容易造成线程的意外中止。 在使用_beginthread和_beginthreadex创建的线程中可以安全的使用CRT函数。但是必须在线程结束的时候相应的调用_endthread或_endthreadex


3._beginthread成对调用的_endthread函数内部隐式的调用CloseHandle关闭了线程句柄,而与_beginthreadex成对使用的_endthreadex则没有关闭线程的句柄,需要显示的调用CloseHandle关闭线程句柄,不要使用_beginthread,使用._beginthreadex代替之。


4.尽量不要在一个MFC程序中使用_beginthreadex()或CreateThread()。


5.没有使用到MFC的线程尽量用_beginthreadex启动。


6.如果在一个与LIBCMT.LIB链接的程序中调用C Runtime函数,则必须要用_beginthreadex启动线程






7._beginthreadex启动的线程可以安全的调用任何C Runtime 函数
原创粉丝点击