Comportamento multithread vazio do list ()?

Eu tenho uma lista que eu quero tópicos diferentes para pegar elementos. Para evitar o bloqueio do mutex que guarda a lista quando está vazio, eu verifico empty()antes de bloquear. Tudo bem se a chamada para list::empty()não estiver correta 100% do tempo. Eu só quero evitar bater ou interromper...