title: Optimal strategy to make a C++ hash table, thread safe
body: <p>(I am interested in design of implementation NOT a readymade construct that will do it all.)</p>
  
  <p>Suppose we have a class HashTable (not hash-map implemented as a tree but hash-table)
  and say there are eight threads.
  Suppose  read to write ratio is about 100:1 or even better 1000:1.
  Case A)  Only one thread is a writer and others including writer can read from HashTable(they may simply iterate over entire hash table)
  Case B)  All threads are identical and all could read/write.</p>
  
  <p>Can someone suggest best strategy to make the class thread safe with following consideration
  1. Top priority to least lock contention
  2. Second priority to least number of locks</p>
  
  <p>My understanding so far is thus : 
  One BIG reader-writer lock(semaphore).
  Specialize the semaphore so that there could be eight instances writer-resource for case B, where each  each writer resource locks one row(or range for that matter).
  (so i guess 1+8 mutexes)</p>
  
  <p>Please let me know if I am thinking on the correct line, and how could we improve on this solution.</p>