在学习Mutex和Spinlock时,我听说有一个包含阻塞的锁(或线程)的列表?在C中
但是,我不知道它叫什么。请告诉我这是什么。
谢谢。
最佳答案
标准C中没有这样的东西,但是您可以很容易地创建类似的东西。本质上,您只是这样做:
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
struct mlist {
int *l;
int len;
};
void mlist_add(struct mlist *list, int obj) {
pthread_mutex_lock(&mutex);
mlist->l[mlist->len] = obj;
mlist->len += 1;
pthread_mutex_unlock(&mutex);
}
int mlist_get(int index) {
pthread_mutex_lock(&mutex);
int ret = mlist->l[index];
pthread_mutex_unlock(&mutex);
}
显然,这并不是完全完整的代码,但是这种类型的实际实现并不需要太多工作。您只需要牢记数据安全性即可。从本质上讲,这意味着在您处理共享数据时随时锁定线程。