In reply to Vishwasu Deshpande:
Synchronization between agents should happen at the sequence level. Using a virtual sequence allows you to ensure that one sequence has completed prior to starting another sequence on a different agent.
You should never use events or barriers between agents as this introduces elements which prevents the reuse of components.