首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言多线程共用同一个hashtable互相看不到写入数据怎么处理

2013-03-04 
c语言多线程共用同一个hashtable互相看不到写入数据怎么办多个线程向同一个hashtable里面写数据,比如A线程

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

多线程的读写  互斥的写入是必须的

热点排行