你好,我用C语言构建了一个散列表。我已经对单元进行了测试,足以确信它的工作原理。问题是数据结构将被动态链接到我没有编写并且可能正在使用线程的代码。所以我需要对它进行同步,以便理论上可以同时修改/读取任意数量的线程。研究并行线程互斥API后,我做了以下在C中实现同步数据结构
声明静态全局变量:
static pthread_mutex_t lock;
在HashTable_init(使用哈希表之前,它总是叫)我初始化它:
pthread_mutex_init(&lock,NULL);
在读取每个函数/写,我把一个锁在启动结构:
pthread_mutex_lock(&lock);
并在最后解锁:
pthread_muter_unlock(&lock);
这足以使数据结构同步吗? (因为目前我的程序挂起)。
谢谢
你的互斥量是递归的吗?也许你有一个死锁,因为你试图锁定两次 – 2011-03-29 14:18:34
请确保你在返回错误路径之前解锁互斥锁。 – nos 2011-03-29 14:19:30