В тази малка статия ще обсъдим как Go lang предоставя отлични инструменти за лесно писане на паралелен код.

Първо, паралелността е доста плашещ термин в разработката на софтуер, ако видим първопричината за най-неочакваните грешки, мнозинството ще сочат корените на паралелността.

добре, какво е паралелност - С прости думи, правейки няколко неща едновременно, но не по едно и също време, нещата се изпълняват много бързо в припокриващи се времеви рамки.

В софтуерната аналогия можем да мислим, че паралелността е свойство на кодовата база, можем да кажем, че тази кодова база има свойството едновременност, което означава, че може да прави множество неща едновременно.

Само предварителна информация, преди да продължим по-нататък, паралелността и паралелността са две различни неща, които имат различни значения и не трябва да се използват взаимозаменяемо.

Накратко - паралелизмът - е две или множество неща, случващи се по едно и също време, което е противоположно на едновременността.

нека да видим примерен прост паралелен код

ако разгледаме отблизо горния примерен кодов фрагмент, можем да имаме различни възможности за резултати, просто внасяйки едновременност в картината, предсказуемостта на резултата ще варира много, между другото, това е естеството на едновременността.

Нека прегледаме какви инструменти предоставя Go Lang за паралелен код.

Първо, само с дума от две букви, наречена (go), можете да прехвърлите вашата част от работата в различна горограма, толкова просто, че това е магията на Go по отношение на паралелността, Go runtime ще се погрижи за всичко зад кулисите на коя нишка изпълнява и планира горутините, всичко е зад кулисите, като се грижи за изпълнението на Go Language.

Добре, само едно малко внимание, Goroutine мисли за това като за още една абстракция върху нишките и е изключително лек по отношение на паметта, когато инициираш Goroutine, ще отнеме само няколко kb памет, което е изключително по-малко в сравнение с нишките създаване, така че като цяло можем просто да създадем 100 хиляди goroutine в движение, което не е възможно, ако искате да направите с нишките.

Списък с техники за писане на лесен едновременен код, предоставен от Go, е чрез пакета за синхронизиране, който е примитиви за достъп до паметта, а също и чрез CSP, модерният начин е чрез канали, изберете и т.н.

Завършва с известен цитат от Go Inventors „Не общувайте чрез споделяне на памет; споделяйте памет чрез комуникация “ — това означава, че ако два кодови блока имат споделена част от паметта, той казва, че не проектирайте кода по този начин, което води до състезания за данни и т.н.... следователно, ако искате да споделите нещо между два блока код за изпълнение, по-добре споделете паметта чрез канали, които директно ще изпращат информацията между два блока на изпълнение"

В следващите блогове ще видите всяка техника, която Go lang предлага за по-лесно и ефективно писане на паралелен код.

Благодаря за четенето, пляскайте го, ако ви харесва !!