News for hackers. Stuff that matters.
Re:New Concurrent Hash Maps for C++ by gpderetta on Tuesday February 02, 2016 @04:43AM (#11018506)
good analysis, but you probably meant "ideally optimized uncontended mutex".

edit: spelling

Re:New Concurrent Hash Maps for C++ by vardump on Tuesday February 02, 2016 @10:00AM (#11019762)
To be exact, I meant code that just repeatedly locks and releases same mutex on all CPU cores.

(Counting is a bit tricky, atomic counter on each lock would invalidate the results. Best to only update the counter, say, on every 1000th result or to use some parallel counting library.)

  for(;;) { 
    mutex.lock(); 
    mutex.unlock();
  }
Re:New Concurrent Hash Maps for C++ by gpderetta on Tuesday February 02, 2016 @07:54PM (#11023988)
OK, now I see what you are saying. It would certainly be true for a spin lock, but it seems to me that, for std::mutex, the kernel transition required to arbitrate contention would dominate even on the coherency traffic, right?
Re:New Concurrent Hash Maps for C++ by vardump on Wednesday February 03, 2016 @12:07AM (#11024822)
Yeah, I was talking about spinlocks.

You're right that context switches would dominate std::mutex. For some reason I was thinking std::mutex uses spinlocks, even though I knew better. Too much kernel side coding lately - context switches are often not possible there, so mutexes are often not possible as potential synchronization mechanisms.

Re:New Concurrent Hash Maps for C++ by gpderetta on Friday February 05, 2016 @12:56PM (#11043221)
You might still be right. The implementation of std::mutex is unspecified, and real world implementations will probably spin a bit before going into the kernel, so for your test case with a tiny critical section it might behave like a spinlock.