在多线程上下文中断言()安全性

row*_*n.G 3 c multithreading pthreads

所以我似乎无法找到关于assert是否可用于多线程上下文的可靠信息.

逻辑上对我来说似乎断言失败线程得到关闭而不是其他线程?

还是整个过程都被杀了?

基本上我的问题.在没有泄漏资源的情况下在多线程环境中使用assert是否安全?

Sou*_*osh 5

如果你看到的手册页assert(),它明确规定,

这个宏的目的是帮助程序员找到程序中的错误.消息"文件foo.c中的断言失败,函数do_bar(),第1287行"对用户没有任何帮助.

这意味着,它仅在开发环境中有用[并且应该使用],而不是在生产软件中.IMO,在开发阶段,你不必担心leak引起的问题assert().因人而异.

一旦你完成调试你的代码,你可以简单地关掉assert()定义[功能#define] NDEBUG.