list :: empty () comportamiento de subprocesos múltiples?

Tengo una lista de la que quiero diferentes hilos para tomar elementos. Para evitar bloquear el mutex que protege la lista cuando está vacío, verifico empty()antes de bloquear. Está bien si la llamada a list::empty()no es correcta el 100% del tiempo. Solo quiero evitar fallar o interrumpir...