您好,我想请教一下代码有关代码线程安全相关的内容
I-Rinka opened this issue · 2 comments
I-Rinka commented
在class SkipList
中的 insert_element
和 delete_element
中,开头的一行使用 mtx.lock();
尝试给数据结构上了锁,不过作为查找的 search_element
却没有上锁。这么做有个问题,虽然它避免了写-写数据竞争,但是没有避免读-写数据竞争,我并不确定在多线程环境下这样依然是安全的,例如某一线程在free的的时候另一线程仍然在读以及使用指针。
LearningStarChen commented
hxd,会不会是这样的呢,我读的时候并不在意正在写的数据呢,也就是即时的。比如一个线程在写kv,但是他没有写进去,那么我读的时候默认就是不读这个数据呢,只是个人意见,本人实力很low,不对的还望指正
Amadeus-cyf commented
要么读写都不加,要么加rw lock,只在写方法加锁无法保证线程安全。