在学习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);
}


显然,这并不是完全完整的代码,但是这种类型的实际实现并不需要太多工作。您只需要牢记数据安全性即可。从本质上讲,这意味着在您处理共享数据时随时锁定线程。

08-16 08:20