This example demonstrates how to use round-robin thread scheduling with multiple threads of the same priority.
extern "C" {
void __cxa_pure_virtual(void) {}
void DebugPrint(const char* szString_);
}
namespace
{
void App1Main(void* unused_);
void App2Main(void* unused_);
void IdleMain(void* )
{
while (1) {}
}
void App1Main(void* unused_)
{
volatile uint32_t u32Counter = 0;
while (1) {
u32Counter++;
if (u32Counter == 1000000) {
u32Counter = 0;
}
}
}
void App2Main(void* unused_)
{
volatile uint32_t u32Counter = 0;
while (1) {
u32Counter++;
if (u32Counter == 1000000) {
u32Counter = 0;
}
}
}
}
int main(void)
{
clIdleThread.Init(awIdleStack, sizeof(awIdleStack), 0, IdleMain, 0);
clIdleThread.Start();
clApp1Thread.Init(awApp1Stack, sizeof(awApp1Stack), 1, App1Main, 0);
clApp2Thread.Init(awApp2Stack, sizeof(awApp2Stack), 1, App2Main, 0);
clApp1Thread.SetQuantum(4);
clApp2Thread.SetQuantum(8);
clApp1Thread.Start();
clApp2Thread.Start();
return 0;
}