2 ms·
Just because a lock is shared does not mean that it's contended. For example, some multi-threading techniques attempt to access only CPU-local data but use loc
by haberman 14y ago
Just because a lock is shared does not mean that it's contended.
For example, some multi-threading techniques attempt to access only CPU-local data but use locks purely to guard against the case where a process is moved across CPUs in the middle of an operation (thus defeating the best-effort CPU-locality).
- JoeAltmaier 14y agoBut it has to be available to those multiple cpus, right? So it has to go down to memory and back up to cache. Contended or not.
- haberman 14y agoMaybe I'm missing something, but if the cache line is only in use by one CPU, I don't see why the value would need to be immediately propagated to main memory or to any other CPU's cache until it is written as part of the normal cache write-back.
- gvb 14y agoCorrect. Typically the cache snoops the main memory bus. If a remote CPU starts a read on a cached memory location, the caching CPU sends a "stall" or "retry" signal to the reader, does a cache flush to main memory, and then lets the remote CPU proceed with the (now correct) main memory read.