关于线程的一些问题


MD和MT官方解析

/MT 
 使应用程序使用运行时库的多线程静态版本。定义_MT 并使编译器将库名 LIBCMT.lib 放入 .obj 文件中,以便链接器使用 LIBCMT.lib解析外部符号。

/MD 
使应用程序使用运行时库的多线程并特定于DLL 的版本。定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj文件中。
用此选项编译的应用程序静态链接到MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR90.DLL, 中,该库必须在运行时对于与MSVCRT.lib 链接的应用程序可用。
当/MD 与 _STATIC_CPPLIB 预处理器定义 (/D_STATIC_CPPLIB)一起使用时,您的应用程序将与静态多线程标准 C++ 库 (libcpmt.lib) 而非动态版本 (msvcprt.lib)链接,但仍通过 msvcrt.lib 动态链接到主 CRT。
请注意,不支持_STATIC_CPPLIB 预处理器定义和 /clr 或 /clr:pure 编译器选项的组合。有关 /clr选项的限制的更多信息,请参见 /clr 限制。


产生一个线程的时候尽量使用_beginthreadex替代createthread和_beginthread函数

相对于createthread,_beginthreadex封装了createthread函数,负责线程额外簿记工作,runtime library通过簿记来为线程分配新的内存

而_beginthread返回的handle很可能是不可用的,因为其第一时间是关闭handle。所以在不能检测其产生的线程状态,该函数参数有限,不然不能产生后直接挂起,以便调整优先权

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值