标准C / C + +运行期库原先并不是设计用于多线程应用程序的唯一一个例子


应该考虑的第一件事情是,“为什么必须将一个库用于单线程应用程序,而将另一个库用
于多线程应用程序?”,原因是,标准C运行期库是1 9 7 0年问世的,它远远早于线程在任何应
用程序上的应用。运行期库的发明者没有考虑到将C运行期库用于多线程应用程序的问题。
考虑一下标准C运行期的全局变量e r r n o。有些函数在发生错误时设置该变量。假设拥有下
面这个代码段:
现在,假设在调用s y s t e m函数之后和调用i f语句之前,执行上面代码的线程中断运行,同
时假设,该线程中断运行是为了让同一进程中的第二个线程开始执行,而这个新线程将执行另
一个负责设置全局变量e r r n o的C运行期函数。当C P U在晚些时候重新分配给第一个线程时,
e r r n o的值将不再能够反映调用上面代码中的s y s t e m函数时的错误代码。为了解决这个问题,每
个线程都需要它自己的e r r n o变量。此外,必须有一种机制,使得线程能够引用它自己的e r r n o
变量,但是又不触及另一个线程的e r r n o变量。
这是标准C / C + +运行期库原先并不是设计用于多线程应用程序的唯一一个例子。在多线程
环境中存在问题的C / C + +运行期库变量和函数包括e r r n o、_ d o s e r r n o、s t r t o k、_ w c s t o k、s t r e r r o r、
_ s t r e r r o r、t m p n a m、t m p f i l e、a s c t i m e、_ w a s c t i m e、g m t i m e、_ e c v t和_ f c v t等。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值