我有一个由多个线程读取/写入的非常大的数组。每个线程一次只会 rw 其中一个元素,因此锁定整个数组是个坏主意。我期待的是
// before threads
lock_t Lock[NUM_THREADS];
...
// during threads
get_lock(Lock[thread_id], element_id);
array[element_id]+=10; // some operations
release_lock(Lock[thread_id]);
所以我的问题是,设计get_lock
和的最佳策略是什么release_lock
?