c语言多线程共用同一个hashtable互相看不到写入数据怎么办
多个线程向同一个hashtable里面写数据,比如A线程写了一个key为a的数据,B线程也在别处搞到key是a的数据,想要查一下hashtable里面有没有,如果有就不往里面写了,结果查不到,所以写进去了,然后最后主线程一看,很多重复key为a的,这怎么解决?
线程不是独有的只是栈内存吗?hashtable的数据我都是malloc的,应该在堆里面啊。
[解决办法]
是不是查找hashtable的地方有问题?
malloc的数据应该是进程间共享的,而且你最后是发现有很多key为a的数据在里面,说明这个hashtable是共享的。
[解决办法]
难道不加锁吗, 加了锁这种问题就不可能存在, 无论原本哈希表是否允许重复插入, 因为你是先查再插入.
[解决办法]
加锁啊,哥. 多线程没锁啊?
[解决办法]
线程使用的是hash表的同一个指针吗?
多线程的读写 互斥的写入是必须的