Kilpailun tila

Kilpaehto (Race condition) on järjestelmän suunnitteluun liittyvä ongelma. Kilpailuehdossa laskennan tulos tai koko järjestelmän käyttäytyminen riippuu siitä, kuinka kauan tietty laskenta kestää tai milloin se käynnistetään. Kilpaehtoja esiintyy logiikkapiireissä ja tietokoneohjelmistoissa, erityisesti monisäikeisissä tai hajautetuissa järjestelmissä.

 

Esimerkki

Usein on vaikea selittää, mitä kilpailutilanne on, mutta hevoskilpailun vertausta voidaan käyttää selityksenä.

Tietokoneohjelma on kuin hevoskilpailu. Tietokoneohjelma tekee useita asioita samanaikaisesti, samalla tavalla kuin hevoskilpailussa useat hevoset juoksevat samaan aikaan. Kukin hevonen edustaa yleensä niin sanottua suoritussäiettä. Näin yksi tällainen säie voi hoitaa verkkoviestintää, toinen voi vastata käyttöliittymän uudelleen piirtämisestä. Kun kyseessä on kilpailuehto, sovellus toimii oikein, jos tietty hevonen voittaa kilpailun. Sovellus voi esimerkiksi toimia, jos hevonen numero viisi voittaa, mutta se kaatuu, jos jokin muu hevonen voittaa kilpailun. Yksi ratkaisu ongelmaan on käyttää synkronointia. Tämä on kuin useiden jockeytoimijoiden yhdistäminen varmistaakseen, että hevonen numero viisi on edellä.

Eri tietokoneilla tai eri tilanteissa tietokoneiden ohjelmat voivat toimia eri nopeuksilla. Joskus ne ovat nopeampia, joskus hitaampia. Tämä voi tarkoittaa sitä, että joissakin järjestelmissä kilpailutilanne ei koskaan näy, vaikka toisissa järjestelmissä se voi näkyä helposti. Kilpaehtoja voi olla vaikea löytää. Kilpaehtojen aiheuttamat virheet ovat usein turhautumisen lähde ohjelmistokehittäjien keskuudessa.

 

AlegsaOnline.com - 2020 / 2023 - License CC3