Browse Source

Add lock for Concurrent

main
kevinyao0901 1 month ago
parent
commit
84fd00cfb9
1 changed files with 12 additions and 0 deletions
  1. +12
    -0
      README.md

+ 12
- 0
README.md View File

@ -391,6 +391,12 @@ Status DBImpl::DeleteIndex(const std::string& fieldName) {
关键代码: 关键代码:
```cpp ```cpp
Status DBImpl::Put(const WriteOptions& o, const Slice& key, const Slice& val) { Status DBImpl::Put(const WriteOptions& o, const Slice& key, const Slice& val) {
// 创建读写锁,放在函数内部
static std::mutex rw_mutex_; // 替换为 std::mutex,适用于 C++11 或更低版本
// 加写锁,确保写操作的原子性
std::unique_lock<std::mutex> lock(rw_mutex_);
... ...
// 在主数据库写入新数据 // 在主数据库写入新数据
batch.Put(key, val); batch.Put(key, val);
@ -434,6 +440,12 @@ Status DBImpl::Put(const WriteOptions& o, const Slice& key, const Slice& val) {
关键代码: 关键代码:
```cpp ```cpp
Status DBImpl::Delete(const WriteOptions& options, const Slice& key) { Status DBImpl::Delete(const WriteOptions& options, const Slice& key) {
// 创建读写锁,放在函数内部
static std::mutex rw_mutex_; // 替换为 std::mutex,适用于 C++11 或更低版本
// 加写锁,确保写操作的原子性
std::unique_lock<std::mutex> lock(rw_mutex_);
... ...
// 从主数据库删除目标键 // 从主数据库删除目标键
batch.Delete(key); batch.Delete(key);

||||||
x
 
000:0
Loading…
Cancel
Save