Let's assume that core A modified a word in memory, then core B try to load the same word. In this case, May core B get a stale value?
According to my understanding, this is possible. For example, the cache invalidation message from core A is queued into the invalidation queue of core B but not complete yet.
But I never observe this when testing it using two threads: one writes the data and another reads it and then check the order.