Strukturalıq parallellik
Strukturalıq parallellik — bul parallel programmalastırıwǵa strukturalıq usıldı qollanıw arqalı kompyuter programmasınıń anıqlıǵın, sapasın hám islep shıǵıw waqtın jaqsılawǵa baǵdarlanǵan programmalastırıw paradigması.
Tiykarǵı koncepciya — bul anıq kiriw hám shıǵıw noqatlarına iye bolǵan hám shıǵıwdan aldın barlıq payda bolǵan aǵımlardıń tamamlanǵanın támiyinleytuǵın basqarıw aǵımı konstrukciyaları arqalı parallel orınlanıw aǵımların (bul jerde yadro hám paydalanıwshı keńisligi aǵımları menen processlerin qamtıydı) inkapsulyaciyalaw. Bunday inkapsulyaciya parallel aǵımlardaǵı qátelerdiń basqarıw strukturasınıń ata-ana kólemine tarqalıwına hám hárbir anıq kompyuter tiliniń jergilikli qáte qayta islew mexanizmleri menen basqarılıwına imkaniyat beredi. Ol parallelliktiń bar bolıwına qaramastan, basqarıw aǵımınıń derek kodınıń strukturası arqalı ańsat kórinip turıwın támiyinleydi. Nátiyjeli bolıwı ushın, bul model programmanıń barlıq dárejelerinde izbe-iz qollanılıwı kerek – basqa jaǵdayda parallel aǵımlar sırtqa shıǵıp ketiwi, jetim bolıp qalıwı múmkin yamasa orınlanıw waqtındaǵı qáteler durıs tarqalmawı múmkin.
Strukturalıq parallellik izbe-iz operatorlardı hám kishi rutinalardı inkapsulyaciyalaytuǵın basqarıw aǵımı konstrukciyaların qollanatuǵın strukturalıq programmalastırıwǵa uqsas.
Tariyxı
1960-jıllardaǵı, OpenMP sıyaqlı kóp processorlı qurallar menen sáwlelengen shaqalanıw-birlesiw modeli, shıǵıwdan aldın barlıq aǵımlardıń tamamlanǵanın támiyinleytuǵın sistemanıń dáslepki bir mısalı. Degen menen, Smit bul modeldiń haqıyqıy strukturalıq parallellik emes ekenin aytadı, sebebi programmalastırıw tili birlesiw háreketinen xabarsız hám sonlıqtan qáwipsizlikti támiyinley almaydı[1].
Koncepciya 2016-jılı Martin Sustrik (ZeroMQ baǵdarlamashısı) tárepinen onıń C kitapxanası libdill menen, baslanǵısh noqat retinde gorutinalardı alıp, qáliplestirilgen[2]. Ol keyinirek 2017-jılı Nataniel Dj. Smit tárepinen jetilistirilip, ol Trio dep atalǵan óziniń Python implementaciyasında «balalar baǵshası úlgisin» kirgizdi[3]. Sol waqıtta, Roman Elizarov Kotlin tili ushın eksperimental korutina kitapxanasın islep shıǵıw barısında ózbetinshe sol bir ideyalarǵa kelgen,[4][5] bul keyinirek standart kitapxanaǵa aylanǵan[6].
2021-jılı Swift strukturalıq parallellikti qabıl etti[7]. Sol jıldıń aqırında, strukturalıq parallellikti Javaǵa qosıw ushın joybar usınısı járiyalandı[8].
Variaciyalar
Tiykarǵı ayırmashılıq noqatı — bul parallel aǵım tereginiń bir aǵzasındaǵı qáteniń qalay qayta isleniwi. Ápiwayı implementaciyalar tek qátege ushıraǵan aǵımnıń balaları menen tuwısqanlarınıń orınlanıwı tamamlanǵanǵa shekem kútedi, sońınan qáteni ata-ana kólemine tarqatadı. Degen menen, bul belgisiz muǵdardaǵı waqıttı alıwı múmkin. Alternativa — balalar menen tuwısqan aǵımlardı tez arada toqtatıw ushın ulıwma biykar etiw mexanizmin (ádette programma invariantlarınıń saqlanıwına imkaniyat beretuǵın kooperativ sxema) qollanıw.
Derekler
- ↑ Smith. «Notes on structured concurrency, or: Go statement considered harmful» (2018-jıl 25-aprel). Qaraldı: 2019-jıl 1-avgust.
- ↑ Sústrik. «Structured Concurrency» (2016-jıl 7-fevral). Qaraldı: 2025-jıl 20-oktyabr.
- ↑ Smith. «Announcing Trio» (2017-jıl 10-mart). Qaraldı: 2022-jıl 23-sentyabr.
- ↑ Elizarov. «Structured concurrency» (2018-jıl 12-sentyabr). Qaraldı: 2019-jıl 21-sentyabr.
- ↑ Elizarov, Roman. Structured concurrency. Hydra Distributed computing conference. „"We needed a name and we needed to finalize this whole concept [...] and we stumble onto this blog post [...] by Nathaniel J. Smith."“
- ↑ «Coroutines basics: Structured concurrency». Kotlin. JetBrains. Qaraldı: 2022-jıl 3-mart.
- ↑ McCall. «Swift Structured Concurrency Proposal». Apple's Swift Evolution repo. GitHub. Qaraldı: 2022-jıl 3-mart.
- ↑ Pressler. «JEP draft: Structured Concurrency (Incubator)». OpenJDK. Oracle. Qaraldı: 2022-jıl 3-mart.