Come dice il titolo: come si testano e si confrontano le diverse implementazioni di mutex in c ++?
Essenzialmente ho scritto la mia classe std :: mutex like per un progetto eseguito su un core 2, armv7 con l'obiettivo di minimizzare il sovraccarico nel caso non contestato. Ora sto considerando l'utilizzo di detto mutex in più punti e anche in diverse architetture, ma prima di farlo vorrei assicurarmi che
- è effettivamente corretto
- non ci sono casi patologici in cui funziona molto peggio di uno standard std :: mutex.
Ovviamente, ho scritto alcuni test unitari di base e micro-benchmark e tutto sembra funzionare, ma nel codice multi-thread "sembra funzionare" non mi dà grande conforto.
- Quindi, esistono tecniche di analisi statiche o dinamiche stabilite?
- Quali sono i problemi più comuni durante la scrittura di unit test per le classi mutex?
- Quali sono i tipici casi limite che dovrebbero essere considerati (per quanto riguarda le prestazioni)?
Uso solo i tipi di libreria standard per l'implementazione, che include carico & non sequenziale-coerente immagazzinare operazioni su atomics. Tuttavia, sono principalmente interessato alla realizzazione di consigli agnostici, dal momento che mi piacerebbe utilizzare lo stesso cablaggio di test anche per altre implementazioni.