mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
43 lines
711 B
C++
43 lines
711 B
C++
#include <Core/Core.h>
|
|
|
|
using namespace Upp;
|
|
|
|
ConditionVariable cv;
|
|
Mutex mtx;
|
|
int count;
|
|
bool texit;
|
|
|
|
void WorkThread()
|
|
{
|
|
for(;;) {
|
|
Mutex::Lock __(mtx);
|
|
LOG("Before wait");
|
|
if(texit) break;
|
|
cv.Wait(mtx);
|
|
LOG("After wait");
|
|
if(texit) break;
|
|
count++;
|
|
}
|
|
LOG("Exiting work thread");
|
|
}
|
|
|
|
CONSOLE_APP_MAIN
|
|
{
|
|
Thread t[10];
|
|
for(int i = 0; i < 10; i++)
|
|
t[i].Run(callback(WorkThread));
|
|
for(int i = 0; i < 1000; i++) {
|
|
Mutex::Lock __(mtx);
|
|
cv.Signal();
|
|
}
|
|
{
|
|
Mutex::Lock __(mtx);
|
|
texit = true;
|
|
}
|
|
texit = true;
|
|
cv.Broadcast();
|
|
for(int i = 0; i < 10; i++)
|
|
t[i].Wait();
|
|
LOG(count);
|
|
LOG("======== OK");
|
|
}
|