Всем привет. Кто более или менее знает теорию потоков, объясните пожалуйста: Можно ли вызывать у какого либо объекта функцию из разных потоков одновременно, а в этой функции использовать QMutex для блокировок, или нужно при любом обращении к объекту делать блокирование, например какой алгоритм правильный:
//псевдокод
ОБЪЕКТ
{
функция()
{
блокировать;
логика;
разблокировать;
}
};
поток1()
{
ОБЪЕКТ->функция()
}
поток2()
{
ОБЪЕКТ->функция()
}
//псевдокод
ОБЪЕКТ
{
функция()
{
логика;
}
};
поток1()
{
блокировать;
ОБЪЕКТ->функция()
разблокировать;
}
поток2()
{
блокировать;
ОБЪЕКТ->функция()
разблокировать;
}
и еще вопрос, что если я буду просто переменную bool использовать в качестве флага блокировки правильно ли это будет, и чем это отличается от QMutex. Внятных ответов для себя в доке не нашел. Прошу помощи.