diff --git a/autotest/SpinLock/SpinLock.cpp b/autotest/SpinLock/SpinLock.cpp new file mode 100644 index 000000000..885fba690 --- /dev/null +++ b/autotest/SpinLock/SpinLock.cpp @@ -0,0 +1,26 @@ +#include + +using namespace Upp; + +SpinLock data_lock; +dword data; + +void AddData() +{ + data_lock.Enter(); + data = data + 1; + data_lock.Leave(); +} + +CONSOLE_APP_MAIN +{ + RTIMING("Test"); + { + CoWork co; + for(int i = 0; i < 10000000; i++) + co & callback(AddData); + } + RDUMP(data); + ASSERT(data == 10000000); + LOG("================ OK"); +} diff --git a/autotest/SpinLock/SpinLock.upp b/autotest/SpinLock/SpinLock.upp new file mode 100644 index 000000000..edcf19ab8 --- /dev/null +++ b/autotest/SpinLock/SpinLock.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + SpinLock.cpp; + +mainconfig + "" = "SSE2 MT"; + diff --git a/autotest/SpinLock/init b/autotest/SpinLock/init new file mode 100644 index 000000000..51c9bba20 --- /dev/null +++ b/autotest/SpinLock/init @@ -0,0 +1,4 @@ +#ifndef _SpinLock_icpp_init_stub +#define _SpinLock_icpp_init_stub +#include "Core/init" +#endif