ultimatepp/autotest/CoWork/CoWork.cpp
cxl c142e16e4e .autotest
git-svn-id: svn://ultimatepp.org/upp/trunk@11105 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2017-05-18 13:34:31 +00:00

38 lines
616 B
C++

#include <Core/Core.h>
using namespace Upp;
void Do() {
Vector<int> h;
CoWork co;
for(int i = 0; i < 1000000; i++)
co & [&] { INTERLOCKED { h.Add(Random()); } };
LOG("Exit Do");
}
CONSOLE_APP_MAIN
{
if(1) {
CoWork co;
String out;
for(int i = 0; i < 4000; i++)
co & [=, &out] { Sleep(1); INTERLOCKED { out << i << ", "; }};
co.Cancel();
co.Finish();
co.Finish();
DUMP(out);
}
Thread a, b, c;
a.Run(callback(Do));
b.Run(callback(Do));
c.Run(callback(Do));
Do();
a.Wait();
b.Wait();
c.Wait();
LOG("Exit main");
LOG("=============== OK");
}