An alternate idea could be going the distributed systems way. Two phase/ three phase commit.
For something like caches, two/three phase commit would likely result in too much overhead. We are investigating directory-based cache coherence with the context that snoop based cache coherence requires too much overhead (namely, bus bandwidth). A two/three phase commit protocol would overload the bus even more than a snooping protocol.