Вы не хотите синхронизировать функции, такие как Java, - это плохая идея, потому что они используют конструкцию блокировки, которая может мешать другим. То, что вы хотите, это объект блокировки. По сути, в классе, который вы хотите защитить, создайте закрытую переменную-член типа object
private readonly object lock_ = new object();
Тогда в любом методе, который вам нужно синхронизировать, используйте конструкцию lock для автоматического входа и выхода из замка: -
public void SomeMethod()
{
lock(lock_)
{
// ...... Do Stuff .........
}
}