いくつかのスレッドで読み取り/書き込みを行う非常に大きな配列があります。各スレッドは一度に 1 つの要素のみを 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
?