我有一个共享哈希表,由8个线程共享(我有一台8核PC),每个线程都会读取和写入哈希表。
在示例1中,我使用了传统的互斥锁,所有8个核心都处于100%的状态。 在示例2中,我使用了shared_timed_mutex,因为读取访问可能会竞争,但所有8个核心都只占用40%。
问题出在哪里?
example 1:
mutex mutex_hash;
-- thread --
mutex_hash.lock();
//read
mutex_hash.unlock();
..
mutex_hash.lock();
//write
mutex_hash.unlock();
============================
example 2:
shared_timed_mutex mutex_hash;
-- thread --
mutex_hash.lock_shared();
//read
mutex_hash.unlock_shared();
..
mutex_hash.lock();
//write
mutex_hash.unlock();