c++ - 如何在 C++ 中使函数线程安全?

标签 c++ multithreading

假设我有一个有 5 个子线程的线程池。他们正在调用一个名为“functionA()”的函数我如何使该函数成为线程安全的?

另外,如果这 5 个线程同时被调用,那么它们是同时执行的吗? 还是他们会等到当前在函数中工作的线程完成?

提前谢谢..

最佳答案

如果一个函数不修改非本地内存并且它不调用任何这样做的函数,它就已经是线程安全的。在这种(微不足道的)情况下,您无需执行任何操作。

您确实想考虑保护数据,而不是功能。例如,假设该函数修改了非本地数据结构 X。提供一个互斥锁来保护 X,并在每次访问之前将其锁定,之后将其解锁。您可能拥有多个访问 X 的函数(例如 insertX()、deleteX()、...)。只要您保护好数据就可以了。

关于c++ - 如何在 C++ 中使函数线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410916/

相关文章:

c++ - 程序不读入节点并将其添加到 2 个双向链表 C++

c++ - 自定义 QTableView 网格样式

java - 使用变量 'values' 在 KornShell 中定义变量 'names'

c++ - 线程中不可见的运行时错误

C++:根据模板参数填充数组

c++ - 从动态库生成异步 QProcess,查看输出直到完成

C++ 函数组合 - Compose 方法优化

c# - Task.Delay 与 Thread.Sleep 的区别

java - 在ubuntu服务器上启动小型java解析应用程序

python - 当需要执行多个线程时如何操作GIL?