Проверьте Набор тестов Phoronix , который является одним из наиболее широко используемого измерительного инструмента производительности и работает на Linux, FreeBSD, Windows, Mac OS X, и т.д.
Вот описание с их веб-сайта:
Набор тестов Phoronix является наиболее комплексным тестированием и платформой сравнительного тестирования, доступной, который служит расширяемой основой, для которой могут быть легко добавлены новые тесты. Программное обеспечение разработано для эффективного выполнения и качественных и количественных сравнительных тестов чистым, восстанавливаемым, и простым в использовании способом.
Первоначально разработанный для автоматизированного тестирования Linux, поддержка Набору тестов Phoronix была с тех пор добавлена для OpenSolaris, Apple Mac OS X, Microsoft Windows и операционные системы BSD . Набор тестов Phoronix состоит из легкого ядра обработки (pts-ядро) с каждым сравнительным тестом, состоящим из основанного на XML профиля и сценариев связанного ресурса. Процесс от установки сравнительного теста, к фактическому сравнительному тестированию, к парсингу важных аппаратных и программных компонентов в большой степени автоматизирован и абсолютно повторяемые, спрашивающие пользователи только для подтверждения действий.
Эквивалентом блокировки / SyncLock было бы использование класса Monitor .
В .NET 1-3.5sp блокировка (obj) выполняет:
Monitor.Enter(obj);
try
{
// Do work
}
finally
{
Monitor.Exit(obj);
}
В .NET 4 это будет:
bool taken = false;
try
{
Monitor.Enter(obj, ref taken);
// Do work
}
finally
{
if (taken)
{
Monitor.Exit(obj);
}
}
Вы можете перевести это на C ++, выполнив:
System::Object^ obj = gcnew System::Object();
Monitor::Enter(obj);
try
{
// Do work
}
finally
{
Monitor::Exit(obj);
}
В C ++ нет эквивалента ключевому слову lock
. Вместо этого вы можете сделать это:
Monitor::Enter(instanceToLock);
try
{
// Only one thread could execute this code at a time
}
finally
{
Monitor::Exit(instanceToLock);
}