У меня есть сомнения, когда я звоню ClassA:funcB()
от ClassA:funcA()
— где ClassA:funcA()
Есть монитор
и когда я звоню ClassA:funcB()
это внутри монитора.
Вот:
static pthread_mutex_t my_mutex;
ClassA::funcA()
{
monitor mp(my_mutex);
err = funcB();
}
ClassA::funcB()
{
...
stuff with NO lock etc
...
}
ClassA:funcB()
вызывается ТОЛЬКО funcA()
это потокобезопасность?
Конечно. Если funcB
является только звонил из funcA
в то время как funcA
приобрел мьютекс, тогда вы в безопасности потоков.
Других решений пока нет …