Como escrever um teste automatizado para segurança de threads

Eu tenho uma classe que não é thread-safe:

class Foo { 
    /* Abstract base class, code which is not thread safe */ 
};

Além disso, se você tiver objetos foo1 e foo2, não poderá chamar foo1-> someFunc () até foo2-> anotherFunc () retornar (isso pode acontecer com dois threads). Essa é a situação e não pode ser alterada (uma subclasse Foo é na verdade um invólucro para um script python).

Para evitar chamadas indesejadas, criei o seguinte -

class FooWrapper {
public:
    FooWrapper(Foo* foo, FooWrappersMutex* mutex);
    /* Wrapped functions from Foo */
};

Internamente, o FooWrapper agrupa as chamadas para as funções do Foo com o mutex compartilhado.

Quero testar o FooWrapper quanto à segurança de threads. Meu maior problema é o fato de os threads serem gerenciados pelo sistema operacional, o que significa que tenho menos controle sobre a execução deles. O que eu gostaria de testar é o seguinte cenário:

O segmento 1 chama fooWrapper1-> someFunc () e bloqueia enquanto estiver dentro da funçãoO segmento 2 chama fooWrapper2-> anotherFunc () e retorna imediatamente (pois someFunc () ainda está em execução)O segmento 1 termina a execução

Qual é o mais simples de testar um cenário como esse automaticamente?

Estou usando o QT no Win32, embora prefira uma solução que seja pelo menos multiplataforma como o QT.