一个例子是malloc函数malloc函数从全局的共享数据区分配一块数据空间因
此加入同时有多个线程调用malloc 混乱的就有可能产生哦当然你可能会考虑用
lock/unlock机制来保证malloc不出这个问题但这是没有用的为什么
假设每个线程调用了printf函数
printf("i=%d s=%s\n",anint,astring);
printf函数是有能暗中调用的malloc函数来分配缓冲区来打印astring字符串的而printf可
能根本不知道你的 malloc调用要用到互斥机制保护所以假如有多个的线程来调用
printf和malloc 错误就可能产生
上面的例子说明了库函数可能产生的问题但不幸的是没有一般的方法来解
决这个问题POSIX threads规定了C语言函数库是要thread-safe的而你如果使用其他
的没有说明thread-safe的库就必须手工来实现线程安全
5 2002-08-20
阅读(361) | 评论(0) | 转发(0) |