Як зазначається в заголовку: Як ви належним чином тестуєте та орієнтуєте різні реалізації мутексів у c ++?
По суті, я написав свій власний std :: mutex like class для проекту, що працює на двох ядрах, armv7 з метою мінімізувати накладні витрати в беззаперечному випадку. Тепер я розглядаю можливість використання зазначеного мютексу в інших місцях, а також різних архітектурах, але перш ніж це зробити, я хотів би переконатися в цьому
- це насправді правильно
- не існує жодних патологічних випадків, в яких він працює набагато гірше, ніж у стандартного std :: mutex.
Очевидно, я написав кілька тестів на базові одиниці та мікро-орієнтири, і все, здається, працює, але в багатопотоковому коді "начебто працює" не дає мені великого комфорту.
- Отже, чи існують усталені методи статичного чи динамічного аналізу?
- Які загальні підводні камені під час написання одиничних тестів для мутексних класів?
- На які типові крайові випадки слід звернути увагу (на ефективність)?
Я використовую лише типові бібліотечні типи для реалізації, що включає не послідовні послідовні операції завантаження та зберігання на атомі. Однак мене в основному цікавлять поради щодо агностики щодо впровадження, оскільки я хотів би використовувати те саме тестовий ремінь і для інших реалізацій.