纯c / c++的函数
_beginthreadex()
引发的问题 属性 c c++ 代码生成 运行库 MT MTD
多线程这一块的运行库
因为 c语言的时候 并没有多线程这个概念 所以会出现各种各样的问题
c语言的错误处理机制 errno(非线程安全) 全局的
3条线程 共用 一个 errno 所以不知道那个线程先运行后运行
1 printf->设置了errno 获取errno的时候交给二号执行
2 获取errno 就错了
因为全局函数的问题 导致线程变得不安全了
于是他想了一个方法
_beginthreadex()线程安全函数
写到 线程里面
_beginthreadex()
多开辟一个空间 存储c语言全局变量变成线程安全的
调用CreateThread()
CreateThread()
结束代码
_endthreadex 删除开辟的空间
总结 : 1用_beginthreadex 比CreateThread安全 因为他多开辟一块空间
2 可移植性更强
3 不要使用_beginthread 因为和CreateThread一样
_beginthreadex()
引发的问题 属性 c c++ 代码生成 运行库 MT MTD
多线程这一块的运行库
因为 c语言的时候 并没有多线程这个概念 所以会出现各种各样的问题
c语言的错误处理机制 errno(非线程安全) 全局的
3条线程 共用 一个 errno 所以不知道那个线程先运行后运行
1 printf->设置了errno 获取errno的时候交给二号执行
2 获取errno 就错了
因为全局函数的问题 导致线程变得不安全了
于是他想了一个方法
_beginthreadex()线程安全函数
写到 线程里面
_beginthreadex()
多开辟一个空间 存储c语言全局变量变成线程安全的
调用CreateThread()
CreateThread()
结束代码
_endthreadex 删除开辟的空间
总结 : 1用_beginthreadex 比CreateThread安全 因为他多开辟一块空间
2 可移植性更强
3 不要使用_beginthread 因为和CreateThread一样