It's a bit more complex than that.
First of all, the cache is not private to the process but to the core. This means that all processes (i.e., threads) running on the same core (and therefore, even in the case of HyperThreading... on both THREADS) share the same cache.
The situation is more statistical than "mathematical," in the sense that if studied carefully, the result is good, with a fairly high percentage.
However, the cache can be invalidated by a very large number of elements, including instructions that by their very nature invalidate the cache (even those of other processes).