b'\n_START_ARTICLE_\nNedaloma operacija\n_START_PARAGRAPH_\nNedaloma operacija (angl. atomic operation) \xe2\x80\x93 veiksmas, kuris, net ir vykdant program\xc4\x85 vienu metu daugeliui gij\xc5\xb3, atliekamas visas i\xc5\xa1 karto. Programuotojui nereikia r\xc5\xabpintis, jog kita gija ras tik pusiau \xc4\xafvykdyto nedalomo veiksmo rezultatus. Taip pat reikalaujama, jog jei nedaloma operacija nepavyksta, ji turi nepavykti visa \xe2\x80\x93 negali likti \xc4\xafvykdyt\xc5\xb3 pradini\xc5\xb3 nepavykusios operacijos \xc5\xbeingsni\xc5\xb3 rezultat\xc5\xb3._NEWLINE_Pavyzd\xc5\xbeiui, priskyrimo sakinys (C, C++ arba java)_NEWLINE_int a;_NEWLINE_a = 10;_NEWLINE_yra nedalomas jei a kintamojo tipas (32 bit\xc5\xb3 sveikasis) toks, jog saugojimui skirtas bit\xc5\xb3 skai\xc4\x8dius sutampa su procesoriaus \xc5\xbeod\xc5\xbeio ilgiu. Tuomet procesorius nauj\xc4\x85 reik\xc5\xa1m\xc4\x99 grei\xc4\x8diausiai ra\xc5\xa1ys viena komanda. Kitos gijos gali aptikti arba sen\xc4\x85j\xc4\x85 reik\xc5\xa1m\xc4\x99, arba nauj\xc4\x85j\xc4\x85 \xe2\x80\x93 tarpini\xc5\xb3 reik\xc5\xa1mi\xc5\xb3 nebus. Nuorod\xc5\xb3 priskyrimas taip pat da\xc5\xbeniausiai yra nedalomas veiksmas._NEWLINE_Tuo tarpu priskyrimo sakinys_NEWLINE_double a;_NEWLINE_a = 10.001;_NEWLINE_gali ir neb\xc5\xabti nedalomas, nes slankaus kablelio skai\xc4\x8diui saugoti gali reik\xc4\x97ti daugiau bit\xc5\xb3 nei telpa procesoriaus \xc5\xbeodyje. Tada procesorius ra\xc5\xa1ys nauj\xc4\x85 reik\xc5\xa1m\xc4\x99 keletu komand\xc5\xb3. Taigi, kit\xc5\xb3 gij\xc5\xb3 po\xc5\xbei\xc5\xabriu, kintamajame a gali trumpam pasirodyti nei pradinei, nei galutinei reik\xc5\xa1mei nelygi tarpin\xc4\x97 reik\xc5\xa1m\xc4\x97._NEWLINE_Priskyrimo sakinys_NEWLINE_long a;_NEWLINE_a = 10;_NEWLINE_n\xc4\x97ra nedalomas veiksmas 32 bit\xc5\xb3 procesoriui, ta\xc4\x8diau paprastai yra toks dabar pasirod\xc5\xbeiusiems 64 bit\xc5\xb3 procesoriams._NEWLINE_Padidinimas vienetu_NEWLINE_a = a + 1;_NEWLINE_n\xc4\x97ra nedaloma operacija ir negali b\xc5\xabti saugiai vykdoma keleto gij\xc5\xb3 vienu metu. Procesoriai paprastai turi komandas atminties l\xc4\x85stel\xc4\x97s reik\xc5\xa1mei vienetu padidinti, tod\xc4\x97l veiksmas_NEWLINE_a ++;_NEWLINE_kai kada gali b\xc5\xabti ir nedalomas (priklauso nuo kompiliatoriaus)._NEWLINE_Naudojant gij\xc5\xb3 sinchronizavimo bei rakinimo metodus, nedaloma galima paversti bet kokio sud\xc4\x97tingumo operacij\xc4\x85. Pavyzd\xc5\xbeiui, (java)_NEWLINE_synchronized (this)_NEWLINE_  {_NEWLINE_    a = 1;_NEWLINE_    b = a + 1;_NEWLINE_    c = a + b;_NEWLINE_  }_NEWLINE_trys priskyrimo sakiniai visi kartu yra nedaloma operacija. Ta\xc4\x8diau ir sinchronizuota sakini\xc5\xb3 seka formaliai gali nedaloma neb\xc5\xabti jei nes\xc4\x97kmes atveju (kai metama i\xc5\xa1imtis) gali likti \xc4\xafvykdyta tik dalis sinchronizuotos sekcijos.'