假设我有一个有 5 个子线程的线程池。他们正在调用一个名为“functionA()”的函数我如何使该函数成为线程安全的?
另外,如果这 5 个线程同时被调用,那么它们是同时执行的吗? 还是他们会等到当前在函数中工作的线程完成?
提前谢谢..
最佳答案
如果一个函数不修改非本地内存并且它不调用任何这样做的函数,它就已经是线程安全的。在这种(微不足道的)情况下,您无需执行任何操作。
您确实想考虑保护数据,而不是功能。例如,假设该函数修改了非本地数据结构 X。提供一个互斥锁来保护 X,并在每次访问之前将其锁定,之后将其解锁。您可能拥有多个访问 X 的函数(例如 insertX()、deleteX()、...)。只要您保护好数据就可以了。
关于c++ - 如何在 C++ 中使函数线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410916/