В какой момент нужно блокировать мьютекс?
В ВУЗе сказали, что я слишком рано блокирую мьютекс в следующем фрагменте кода. Якобы, его нужно блокировать после цикла do while. Объясните, пожалуйста, почему я не прав и как можно было бы исправить данную ошибку.
void *writeFunction(void *argm){
// имитация обработки данных
usleep(500);
pthread_mutex_lock(&mutex);
Client temp;
int choice = 0;
do{
std::cout << "Введите данные" << std::endl;
std::cin >> temp;
std::cout << "Продолжить? (0/1): "; std::cin >> choice;
messages.push(temp);
}while(choice != 0);
if(messages.size() != 0){
pthread_cond_signal(&condition);
}
pthread_mutex_unlock(&mutex);
return nullptr;
}