Io uso std::mutex
e std::lock_guard
in una vera e propria maniera RAII in tutta la mia domanda:std :: :: mutex blocco non riesce su Windows, il codice di errore 3
struct Foo {
int f() const
{
std::lock_guard<std::mutex> locker(m_mutex);
return m_i;
}
private:
int m_i = 0;
mutable std::mutex m_mutex;
};
E 'sempre funzionato, ma ho aggiunto il parallelismo a uno più classe solo ora, e in questa nuova classe locker
getta std::system_error
. Il problema è qui (xthread
intestazione):
inline int _Mtx_lockX(_Mtx_t *_Mtx)
{ // throw exception on failure
return (_Check_C_return(_Mtx_lock(_Mtx)));
}
_Mtx_lock
restituisce 3, mentre il valore atteso è 0. Non ho idea di quello che 3 mezzi.
VS2013, runtime v120_x64.
Invia il codice che crea l'istanza del mutex. –
@WernerErasmus: ha ampliato la domanda. –
Forniscici abbastanza codice per riprodurre il problema. Oppure controlla lo stack delle chiamate quando si verifica l'errore e potrebbe essere ovvio. –