本文介绍了sprintf的是线程安全的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是的sprintf 线程安全吗?
//Global log buffer char logBuffer[20]; logStatus (char * status, int length) { snprintf(logBuffer, 19, status); printf ("%s\n", logBuffer); }这个函数的线程安全性完全取决于的snprintf / 的sprintf 的线程安全。
更新:感谢乌拉圭回合的答案。我不介意,如果实际内容GTS搞砸了。但要确认的sprintf不会造成内存损坏/缓冲区溢出超越20个字节在这种情况下,当多个线程试图写日志缓冲区?
推荐答案有是一个使用的snprintf()在多线程没有问题。但在这里,你正在写一个共享字符串缓冲区,我以为是跨线程共享。
There is no problem using snprintf() in multiple threads. But here you are writing to a shared string buffer, which I assume is shared across threads.
所以的您使用此功能的会的不的线程安全的。
So your use of this function would not be thread safe.
更多推荐
sprintf的是线程安全的?
发布评论