У меня есть программа на C ++, которая запускает несколько потоков для манипулирования одними и теми же данными.Каждый из этих потоков имеет указатель на объект, которым манипулируют, например:
thread1 и thread2 оба имеют указатель на object1
object1-> addSomething (), который может использоваться либо thread1, либо 2и ссылаются на один и тот же объект
Теперь эти операции могут создать некоторые проблемы, если они выполняются в один и тот же момент обоими потоками, поэтому я хочу простой механизм блокировки.Я просто хочу:
void method()
{
waitUntilFree()
blockForOthers()
doSomething()
unblock()
}
Есть ли простой способ сделать это?Я просто хочу заблокировать и ждать, пока он не станет бесплатным.Я не против, что нить, возможно, придется подождать некоторое время.Есть ли простой механизм для этого?Я использую Boost для этих потоков, но я не мог придумать способ сделать это (на первый взгляд) простой блок-и-подождите.