给一个C++类foo,里面有一个synchronized方法.如何保证只有一个线程访问同步方法

use*_*288 2 c++ java multithreading synchronization class

给一个C++类foo,里面有一个synchronized方法.我们有两个foo对象,名为f1和f2,如果f1和f2同时运行,我们能保证只有一个线程访问同步方法吗?

我的想法:

使用互斥量,无论谁需要访问该方法,谁获得互斥锁.

这个面试问题似乎并不那么简单.

有解决方案吗

谢谢

Tre*_*man 8

在java中,除非方法是静态的,否则需要在外部进行同步,以确保方法一次只能被一个线程调用.

您还可以在类的静态变量上同步方法本身.例如

public class myClass
{
  private static Object myLock = new Object();

  public void myMethod()
  {
    synchronized(myLock)
    {
      // ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)