Synchronize 3D texture pixel across instances of compute shader?

I have a 3D texture with lighting values that I want to spread out, like Minecraft. I am using a compute shader for this. There's one shader that casts skylight onto the texture, then the other shader spreads out that skylight along with light-emitting blocks. The issue is synchronization. I've seen that I can use atomic operations on images, but those require the format to be int/uint, and I can't do that for 3D textures. Is there a way (something similar to Java synchronization) to prevent other instances of the compute shader from accessing a specific pixel of the texture?