我使用以下方法在c中创建一个ArrayList。
//Creates a new list with each object being dataSize
ArrayList* newList(int dataSize);
//adds an element to the list
int add(ArrayList *list, void* data);
//returns the index of an element
int getIndex(ArrayList *list, void* data);
//returns the element at the given index
void* getData(ArrayList *self, int index);
//Removes the given data from the list and shifts the list to the left
bool removeData(ArrayList *list, void *data);
//Removes the data at the index from the list and shifts the list to the left
void *remove_index_al(ArrayList *list, int index);
//Frees the list
void freeList(ArrayList *list);
//resizes the list
static bool resize(ArrayList* list)
我希望通过添加
来使我的arraylist线程安全pthread_mutex_lock(&self->mutex);
和
pthread_mutex_unlock(&self->mutex);
在每种方法的开头和结尾。
但是,我并不想将它们添加到每个方法中。我只想在需要的地方添加它们。为了防止竞争条件,需要锁定和解锁哪些方法?
目前我已调整大小并添加锁定,但我认为我不需要锁定newList。我是否需要锁定和解锁所有其他方法以确保同步?