#include "../headers/cpu.h" #include void cpu::start() { if (running) return; running = true; nitUre = std::thread(&cpu::zankaUre, this); } void cpu::stop() { running = false; if (nitUre.joinable()) nitUre.join(); } bool cpu::isRunning() { return running.load(); } int cpu::getSpeed() { return hitrostKhz; } void cpu::setSpeed(int speedKhz) { if (speedKhz < 1) speedKhz = 1; hitrostKhz = speedKhz; } void cpu::zankaUre() { while (running) { for (int i = 0; i < operacijeNaTick; i++) { bool ok = cpu::m->execute(); if (!ok) { running = false; //std::cout << i << std::endl; break; } } if (!running) break; double ticksPerSecond = (hitrostKhz * 1000.0) / operacijeNaTick; double sleepTimeSec = 1.0 / ticksPerSecond; std::this_thread::sleep_for(std::chrono::duration(sleepTimeSec)); } } void cpu::step() { cpu::m->execute(); }