Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从不同线程同步调用公共函数_C++_Multithreading_Thread Safety_Mutex - Fatal编程技术网

C++ 从不同线程同步调用公共函数

C++ 从不同线程同步调用公共函数,c++,multithreading,thread-safety,mutex,C++,Multithreading,Thread Safety,Mutex,我有一个要求,我需要根据动态激活的触发器发送电子邮件。我已经在下图中简要介绍了我当前的代码体系结构 在下图中,我有一个classSample.cpp,它具有Common功能,我可以在其中发送电子邮件。此通用函数正在从EmailClass中的函数triggerFun的单个线程中调用EmailClass由多个类动态调用,如下图所示 我的要求是,我希望跨多个线程同步使用common函数。意味着一次只需要一个线程调用common函数。在第一个线程中竞争使用公共函数后,然后要允许第二个线程允许执行公共函数

我有一个要求,我需要根据动态激活的触发器发送电子邮件。我已经在下图中简要介绍了我当前的代码体系结构

在下图中,我有一个classSample.cpp,它具有Common功能,我可以在其中发送电子邮件。此通用函数正在从EmailClass中的函数triggerFun的单个线程中调用EmailClass由多个类动态调用,如下图所示

我的要求是,我希望跨多个线程同步使用common函数。意味着一次只需要一个线程调用common函数。在第一个线程中竞争使用公共函数后,然后要允许第二个线程允许执行公共函数等

您能告诉我是否有任何方法可以在使用函数common时同步线程吗


您可以使用
std::mutex

void common() {
  static std::mutex m;
  std::lock_guard lck(m);
  
  // do something

}

你在找std::mutex吗?@maximum_prime_是_463035818,在我的例子中,有10多个线程试图访问“Common”函数。所以,当我使用互斥锁时,是否所有剩余的线程都会等待公共函数从前一个线程函数解锁,然后剩余的线程就会被执行?在我的例子中,有10多个线程试图访问“公共”函数。所以,当我使用互斥锁时,是否所有剩余的线程都会等待公共函数从前一个线程函数解锁,然后剩余的线程就会被执行?@masthan是的,这就是互斥锁的用途。有关更多信息,请参阅。