pureikyubu/RnD/ThreadDemo/ThreadDemo.cpp
2020-08-09 17:59:07 +03:00

65 lines
841 B
C++

// ThreadDemo
//
#include "pch.h"
SpinLock Girl;
void ThreadBoy1(void* param)
{
Girl.Lock();
printf("Boy1 owning Girl.\n");
Thread::Sleep(100);
Girl.Unlock();
}
void ThreadBoy2(void* param)
{
Girl.Lock();
printf("Boy2 owning Girl.\n");
Thread::Sleep(100);
Girl.Unlock();
}
void SpamThread(void* param)
{
printf("Spam! ");
Thread::Sleep(5);
}
int main()
{
// Mutual-exclusive syncronization
Thread* boy1 = new Thread(ThreadBoy1, false, nullptr, "Boy1");
Thread* boy2 = new Thread(ThreadBoy2, false, nullptr, "Boy2");
Thread::Sleep(2000);
delete boy1;
delete boy2;
// Suspend/Resume
Thread *spam = new Thread(SpamThread, true, nullptr, "Spam");
for (int i = 0; i < 10; i++)
{
Thread::Sleep(500);
spam->Resume();
Thread::Sleep(500);
spam->Suspend();
}
delete spam;
printf("\n");
return 0;
}