The ideal number is one per processor, but that implies that none of these threads should execute a blockingoperation such as a synchronous read/write or a wait on an event.
Unlocking the mutex happens immediately, but waiting on the condition mycond is normally a blockingoperation, meaning that our thread will go to sleep, consuming no CPU cycles until it is woken up.