Advanced synchronization techniques for task-based runtime systems