Учитывая мьютекс, который защищает структуру, я бы хотел защитить член структуры mystruct
с именем 'tasklist`.Будет ли достаточно использования мьютекса в следующем сценарии?
Код:
pthread_mutex_lock(&th_mutex);
addNewItem(&mystruct);
pthread_mutex_unlock(&th_mutex);
Условия:
- Список
tasklist
имеет фиксированную длину n. - Если новый элементЧтобы добавить его в этот список, когда он уже заполнен, массив расширяется путем создания списка размером 2n, 3n, ... и выполнения memcpy со старым списком.
- Все это делается в
addNewItem
.
Причина, по которой я спрашиваю, заключается в том, что у меня возникла проблема, когда кажется, что перебор элементов в списке задач указывает на блок памяти, который уже был освобожден.Я не уверен, является ли это местом старого списка, но поскольку исходная проблема требует много попыток воспроизвести, я в настоящее время много проверяю код.