diff options
Diffstat (limited to 'shards.go')
| -rw-r--r-- | shards.go | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -65,3 +65,31 @@ func ( db *RedisDB) ExecuteMulti(keys []string, fn func([]*Shard) interface{})in return fn(shards) } } + +func ( db *RedisDB) ExecuteAll(fn func([]*Shard) interface{})interface{}{ + for _, shard := range db.shards { + shard.mu.Lock() + } + + defer func(){ + for i := len(db.shards)-1;i >= 0; i --{ + db.shards[i].mu.Unlock() + } + }() + + return fn(db.shards) +} + +func ( db *RedisDB) ExecuteReadAll(fn func([]*Shard) interface{})interface{}{ + for _, shard := range db.shards { + shard.mu.RLock() + } + + defer func(){ + for i := len(db.shards)-1;i >= 0; i --{ + db.shards[i].mu.RUnlock() + } + }() + + return fn(db.shards) +}
\ No newline at end of file |
