我在C语言中开发文件系统.FUSE是事件驱动系统,因此它将自己的操作码与用户的回调函数相匹配.据我所知,C中的静态函数仅表示范围限制 - 即如果静态函数f()是在foo.c中编写的,则其符号的范围仅为foo.c而不是每个其他源文件.但我的团队成员说静态函数不是线程安全的,所以我们应该使回调非静态.(我们的系统必须在多线程环境中工作,所以它应该考虑并发.)
我整天用Google搜索,但我找不到它.我想问一下你对C中静态函数的线程安全性的认识或看法.
声明函数static不会改变它有关多线程的行为.函数本身仍然是线程安全的,只要它不包含任何自修改代码.
您的同事可能会将静态函数与静态存储持续时间的变量混淆:声明了局部变量static.这些确实会影响线程安全.