Thread synchronisation
Do it too little and your program is broken
Do it too much and your threads can spend most of their time waiting for each other