linux - 多线程环境下可重入函数有什么用?

标签 linux multithreading

多线程环境下可重入函数有什么用?

最佳答案

线程应仅使用线程安全的可重入函数,以确保数据完整性和不可预测的行为。

All system calls and library functions which end with _r are re-entrant or Mt-Safe functions for e.g ctime_r

参见localtime()的手册页

       ┌───────────────┬───────────────┬─────────────────────────────────┐
       │Interface      │ Attribute     │ Value                           │
       ├───────────────┼───────────────┼─────────────────────────────────┤
       │asctime()      │ Thread safety │ MT-Unsafe race:asctime locale   │
       ├───────────────┼───────────────┼─────────────────────────────────┤
       │asctime_r()    │ Thread safety │ MT-Safe locale                  │
       ├───────────────┼───────────────┼─────────────────────────────────┤
       │ctime()        │ Thread safety │ MT-Unsafe race:tmbuf            │
       │               │               │ race:asctime env locale         │
       ├───────────────┼───────────────┼─────────────────────────────────┤
       │ctime_r(),     │ Thread safety │ MT-Safe env locale              │
       │gmtime_r(),    │               │                                 │
       │localtime_r(), │               │                                 │
       │mktime()       │               │                                 │
       ├───────────────┼───────────────┼─────────────────────────────────┤
       │gmtime(),      │ Thread safety │ MT-Unsafe race:tmbuf env locale │
       │localtime()    │               │                                 │
       └───────────────┴───────────────┴─────────────────────────────────┘

关于linux - 多线程环境下可重入函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49535338/

相关文章:

mysql - 恢复数据库备份导致坏字符

c# - 如何从另一个线程将项目添加到 ListView 而不会导致异常

windows - VB - 以隐式方式链接 DLL

c# - 在启动 Windows 服务时,启动线程。我怎样才能做到这一点?

linux - Kali Linux 中自动启动脚本的其他方法?

linux - 将负载分配给多个 cron 作业

linux - 树莓派 PCM 设备驱动

c - Linux C : segfault error 4 in libmysqlclient. so.18.0.0

java - 不需要的 block 线程导致 Tomcat 失败

c++ - 关于 Direct2D 绘图调用中的多线程