Explain the difference between synchronous and asynchronous processing in a distributed system, and when you would use each.