Nedaloma operacija angl atomic operation veiksmas kuris net ir vykdant programą vienu metu daugeliui gijų atliekamas vis
Nedaloma operacija

Nedaloma operacija (angl. atomic operation) – veiksmas, kuris, net ir vykdant programą vienu metu daugeliui gijų, atliekamas visas iš karto. Programuotojui nereikia rūpintis, jog kita gija ras tik pusiau įvykdyto nedalomo veiksmo rezultatus. Taip pat reikalaujama, jog jei nedaloma operacija nepavyksta, ji turi nepavykti visa – negali likti įvykdytų pradinių nepavykusios operacijos žingsnių rezultatų.
Nedalomos operacijos buvo pasiūlytos kaip greitesnė alternatyva užraktui. Jei užraktu apsaugotas bendras resursas dažnai reikalingas daugeliui gijų, jos gali daugumą laiko praleisti laukdamos užrakto eilėje. Nedalomos operacijos padeda sukurti algoritmus kuriuose daugelis gijų naudoja resursą be rakinimo. Patyrusio programuotojo rankose tai labai efektyvus metodas.
Pavyzdžiui, priskyrimo sakinys (C, C++ arba Java)
int a; a = 10;
yra nedalomas jei a kintamojo tipas (32 bitų sveikasis) toks, jog saugojimui skirtas bitų skaičius sutampa su procesoriaus žodžio ilgiu. Tuomet procesorius naują reikšmę greičiausiai rašys viena komanda. Kitos gijos gali aptikti arba senąją reikšmę, arba naująją – tarpinių reikšmių nebus. Nuorodų priskyrimas taip pat dažniausiai yra nedalomas veiksmas.
Tuo tarpu priskyrimo sakinys
double a; a = 10.001;
gali ir nebūti nedalomas, nes slankaus kablelio skaičiui saugoti gali reikėti daugiau bitų nei telpa procesoriaus žodyje. Tada procesorius rašys naują reikšmę keletu komandų. Taigi, kitų gijų požiūriu, kintamajame a gali trumpam pasirodyti nei pradinei, nei galutinei reikšmei nelygi tarpinė reikšmė.
Priskyrimo sakinys
long a; a = 10;
nėra nedalomas veiksmas 32 bitų procesoriui, tačiau paprastai yra toks 64 ar daugiau bitų procesoriams.
Padidinimas vienetu
a = a + 1;
nėra nedaloma operacija ir negali būti saugiai vykdoma keleto gijų vienu metu. Procesoriai paprastai turi komandas atminties ląstelės reikšmei vienetu padidinti, todėl veiksmas
a ++;
kai kada gali būti ir nedalomas (priklauso nuo kompiliatoriaus).
Naudojant gijų sinchronizavimo bei rakinimo metodus, nedaloma galima paversti bet kokio sudėtingumo operaciją. Pavyzdžiui, (java)
synchronized (this) { a = 1; b = a + 1; c = a + b; }
trys priskyrimo sakiniai visi kartu yra nedaloma operacija. Tačiau ir sinchronizuota sakinių seka formaliai gali nedaloma nebūti jei nesėkmes atveju (kai metama išimtis) gali likti įvykdyta tik dalis sinchronizuotos sekcijos.
Dažniausiai naudojamos nedalomos operacijos (nenaudojant rakinimo) yre šios:
- Perskaityk kintamojo x reikšmę.
- Priskirk kintamąjam x reikšmę.
- Priskirk kintamąjam reikšmę, grąžink ten buvusią ankstesnę reikšmę.
- Pridėk prie kintamojo reikšmės skirtumą y, grąžink buvusią reikšmę iki pridedant.
- Jei x = z, priskirk x reikšmę y. Bet kuriuo atveju grąžink seną x reikšmę.
Šios operacijos vadinamos „fundamentaliosiomis“. Jų pagalba rašomi rakinimo nereikalaujantys algoritmai.
Šaltiniai
- Atomic Operations. threadingbuildingblocks.org
- Victor Alessandrini, in Shared Memory Application Programming, 2016. Atomic Operation. Atomic Types and Operations.[1]
Autorius: www.NiNa.Az
Išleidimo data:
vikipedija, wiki, lietuvos, knyga, knygos, biblioteka, straipsnis, skaityti, atsisiųsti, nemokamai atsisiųsti, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, pictu, mobilusis, porn, telefonas, android, iOS, apple, mobile telefl, samsung, iPhone, xiomi, xiaomi, redmi, pornografija, honor, oppo, Nokia, Sonya, mi, pc, web, kompiuteris, Informacija apie Nedaloma operacija, Kas yra Nedaloma operacija? Ką reiškia Nedaloma operacija?
Nedaloma operacija angl atomic operation veiksmas kuris net ir vykdant programa vienu metu daugeliui giju atliekamas visas is karto Programuotojui nereikia rupintis jog kita gija ras tik pusiau įvykdyto nedalomo veiksmo rezultatus Taip pat reikalaujama jog jei nedaloma operacija nepavyksta ji turi nepavykti visa negali likti įvykdytu pradiniu nepavykusios operacijos zingsniu rezultatu Nedalomos operacijos buvo pasiulytos kaip greitesne alternatyva uzraktui Jei uzraktu apsaugotas bendras resursas daznai reikalingas daugeliui giju jos gali dauguma laiko praleisti laukdamos uzrakto eileje Nedalomos operacijos padeda sukurti algoritmus kuriuose daugelis giju naudoja resursa be rakinimo Patyrusio programuotojo rankose tai labai efektyvus metodas Pavyzdziui priskyrimo sakinys C C arba Java int a a 10 yra nedalomas jei a kintamojo tipas 32 bitu sveikasis toks jog saugojimui skirtas bitu skaicius sutampa su procesoriaus zodzio ilgiu Tuomet procesorius nauja reiksme greiciausiai rasys viena komanda Kitos gijos gali aptikti arba senaja reiksme arba naujaja tarpiniu reiksmiu nebus Nuorodu priskyrimas taip pat dazniausiai yra nedalomas veiksmas Tuo tarpu priskyrimo sakinys double a a 10 001 gali ir nebuti nedalomas nes slankaus kablelio skaiciui saugoti gali reiketi daugiau bitu nei telpa procesoriaus zodyje Tada procesorius rasys nauja reiksme keletu komandu Taigi kitu giju poziuriu kintamajame a gali trumpam pasirodyti nei pradinei nei galutinei reiksmei nelygi tarpine reiksme Priskyrimo sakinys long a a 10 nera nedalomas veiksmas 32 bitu procesoriui taciau paprastai yra toks 64 ar daugiau bitu procesoriams Padidinimas vienetu a a 1 nera nedaloma operacija ir negali buti saugiai vykdoma keleto giju vienu metu Procesoriai paprastai turi komandas atminties lasteles reiksmei vienetu padidinti todel veiksmas a kai kada gali buti ir nedalomas priklauso nuo kompiliatoriaus Naudojant giju sinchronizavimo bei rakinimo metodus nedaloma galima paversti bet kokio sudetingumo operacija Pavyzdziui java synchronized this a 1 b a 1 c a b trys priskyrimo sakiniai visi kartu yra nedaloma operacija Taciau ir sinchronizuota sakiniu seka formaliai gali nedaloma nebuti jei nesekmes atveju kai metama isimtis gali likti įvykdyta tik dalis sinchronizuotos sekcijos Dazniausiai naudojamos nedalomos operacijos nenaudojant rakinimo yre sios Perskaityk kintamojo x reiksme Priskirk kintamajam x reiksme Priskirk kintamajam reiksme grazink ten buvusia ankstesne reiksme Pridek prie kintamojo reiksmes skirtuma y grazink buvusia reiksme iki pridedant Jei x z priskirk x reiksme y Bet kuriuo atveju grazink sena x reiksme Sios operacijos vadinamos fundamentaliosiomis Ju pagalba rasomi rakinimo nereikalaujantys algoritmai SaltiniaiAtomic Operations threadingbuildingblocks org Victor Alessandrini in Shared Memory Application Programming 2016 Atomic Operation Atomic Types and Operations 1