我在服务器对象中有多个线程正在执行相同的任务。这些线程是使用 Server::* 例程初始化的。
在这个例程中有一个带有一些处理的无限循环。
我想知道对多个线程使用相同的方法是否是线程安全的?难怪对于类的字段,如果我想读取或写入它,我将使用互斥体。但是例程本身呢?
既然一个函数是一个地址,那些线程将在同一个内存区域中运行?
我是否需要为每个线程创建一个具有相同代码的方法?
Ps: 我用的是std::mutex(&Server::Task, this)
最佳答案
两个线程同时运行同一个函数(不管是不是成员函数)是没有问题的。
就指令而言,这类似于让两个线程同时读取同一个字段 - 没关系,它们都获得相同的值。当您有一种写入和一种读取,或两种写入时,您就会开始出现竞争条件。
关于c++ - 成员函数线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419354/