以下哪些函数是线程安全的?

w_anthony 2008-02-27 10:33:07
windows和linux下,sprint,sscanf,strlen,strcpy,strcmp,memcpy,memcmp,atoi,printf,scanf是否线程安全?
请指点一下,我找不到介绍说明。

ps:
是不是除了printf和scanf都是线程安全的?如果有介绍网址提供,那就更好了!
...全文
1751 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
njusthsy 2012-05-04
  • 打赏
  • 举报
回复
gcc下都是线程安全的,但不是可重入的
scq2099yt 2008-03-04
  • 打赏
  • 举报
回复
都不安全
hwsts2 2008-02-29
  • 打赏
  • 举报
回复
在多线程 版本下 理论都是安全的
pkw1155402 2008-02-27
  • 打赏
  • 举报
回复
对这方面没有研究过,亲听各位高手的解说。偷学。。呵呵~~
jwybobo2007 2008-02-27
  • 打赏
  • 举报
回复
感觉所说的线程安全其实就是数据的安全,如果同时有N个相同线程运行的话可能会出现内存访问的问题,感觉只要对关键代码进行保护,进行线程同步处理可以避免错误的发生。
w_anthony 2008-02-27
  • 打赏
  • 举报
回复
我多线程的程序输出调试信息都是printf的,拷贝数据都是要strcpy,memcpy,比较数据都是strcmp,strcmp,单只是自己的函数是线程安全又有什么用?两个不同函数同时调用printf不还是不能互斥?
如果这些函数确实不是线程安全的,我就要自己写一个函数包装这些库函数作互斥。但是偏偏我测试没有出问题啊!
有一点可以确定的是vc选MT或者MTd的话,这些函数全都变成线程安全了,就是不知道gcc加了-pthread之后就也是线程安全的了。

r_swordsman 2008-02-27
  • 打赏
  • 举报
回复
这些基本的函数不可能是线程安全的,
因为要保证线程安全是需要好多额外代码的。

所以lz需要做的是保证自己的类或函数是线程安全的即可。
r_swordsman 2008-02-27
  • 打赏
  • 举报
回复
_s 类是针对内存泄露的安全,不是线程安全。
cnzdgs 2008-02-27
  • 打赏
  • 举报
回复
多线程共同访问全局对象时应该考虑的是线程同步问题,避免访问时发生冲突。
zhoujianhei 2008-02-27
  • 打赏
  • 举报
回复
线程安全都是骗人的,楼主不要轻信。
w_anthony 2008-02-27
  • 打赏
  • 举报
回复
我什么时候认为printf和scanf都是线程安全的了?我是100000次循环没测试出线程不安全,所以混乱了……
r_swordsman 2008-02-27
  • 打赏
  • 举报
回复
你为什么认为printf和scanf都是线程安全的?
w_anthony 2008-02-27
  • 打赏
  • 举报
回复
wltg2001可以说说怎么使用多线程的运行时库么?主要是gcc下面,是不是加了-pthread编译参数,就已经是线程安全的了?我的100000次printf都没有出错……
w_anthony 2008-02-27
  • 打赏
  • 举报
回复
我vc下试过开两个线程作100000次printf,结果确实会出错,但如果选多线程调试MTd的话则不会出错,似乎是自动选用线程安全的同名库函数方式进行编译了。
在linux下用gcc编译,也做100000次printf,运行正常。
因此搞不清到底是不是线程安全的了。

我个人认为,除了printf和sscanf都是对stdin做操作,因此可能会出问题,其他几个函数似乎没有什么内存是公用的,真不知道到底是不是线程安全的了。

至于scanf_s这类的,gcc没有,没办法用。我这个程序主要还是要放在Linux下用的。
TieShou 2008-02-27
  • 打赏
  • 举报
回复
都是不安全的,VC 2005里面会有警告。
安全的后面都有 _s
scanf_s ...
wltg2001 2008-02-27
  • 打赏
  • 举报
回复
应该多是线程安全,前提是你要用多线程的运行时库
cnzdgs 2008-02-27
  • 打赏
  • 举报
回复
这些函数都是不安全的。
cnzdgs 2008-02-27
  • 打赏
  • 举报
回复
LZ说的线程安全是指什么?
w_anthony 2008-02-27
  • 打赏
  • 举报
回复
自己顶一下
wgm001 2008-02-27
  • 打赏
  • 举报
回复
帮顶下吧!
加载更多回复(4)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧