Ikuinen silmukka on ohjelmoinnissa ohjelma, joka jatkaa suoritustaan ikuisesti, jos sitä ei muuten keskeytetä.
Esimerkiksi C++-koodi
while (true)
std::cout << "Toistetaan vielä kerran." << std::endl;
tai vastaava for-silmukalla
for(;;)
puts("jatketaan");
Käyttöjärjestelmissä jotka eivät käytä moniajoa tai joiden moniajo on yhteistyötyyppistä, ikuisen silmukan käyttö saattaa johtaa järjestelmän lukkiutumiseen, varsinkin jos ohjelman keskeyttäminen on estetty. Nykyisten käyttöjärjestelmien estävässä moniajossa ohjelman voi yleensä keskeyttää.
Ikuisen silmukan tyypillinen sovellus on odottava silmukka (busy-wait loop): ohjelmassa prosessoidaan tietoa kunnes jokin silmukan ulkopuolinen tekijä muuttaa tietyn muuttujan arvoa. Esimerkiksi:
volatile int valmis = 0;
void silmukka() {
while(valmis == 0)
std::cout << "Toistetaan silmukkaa." << std::endl;
}
void lopeta_silmukka() { // Kutsutaan toisessa ohjelmasäikeessä
valmis = 1;
}