Как создать QThread без переключения задач - PullRequest
0 голосов
/ 13 января 2019

Я занимаюсь разработкой симулятора Atmega328P MCU, и у меня возникла небольшая проблема с таймером. Таймер в Atmega328P тикает один раз за 62,5 нс (на 16 МГц), и я должен имитировать это. Для решения проблемы я создал этот класс

class DLL_EXPORT Timer : public QThread
...

void Timer::run()
{
    CCPU* cpu = dynamic_cast<CCPU*>(parent());
    if (cpu == nullptr)
    {
        exit();
        return;
    }

    QElapsedTimer timer_core;
    timer_core.start();
    while (1)
    {
        if (timer_core.nsecsElapsed() >= 62)
        {
            ++cpu->GetIOPorts()[0x26];
            timer_core.restart();
        }
    }
}

Кажется, что работает нормально, но есть небольшая проблема, связанная с процессом переключения задач в CPU. Как я могу отключить этот процесс для этого определенного класса?

А может, есть другой подход к решению?

...