Канал (англ. Channel) — програмний механізм взаємодії між процесами і їх синхронізації при передачі даних (обміну повідомленнями). Повідомлення можуть бути надіслані через канал і інший процес або потік, що має посилання на канал, може отримувати повідомлення з каналу як з файлового потоку. Різні реалізації каналів можуть бути синхронними або асинхронними, використовувати або не використовувати буферизацію повідомлень.
Канали є основоположним поняттям для реалізації підходу і з'явилися у взаємодіючих послідовних процесах (CSP) формальної моделі паралелізму. Канали використовуються в багатьох мовах програмування, таких як Occam, Limbo (через мови Newsqueak і Alef) для вирішення задач паралельних та конкурентних обчислень. Вони також використовуються в потокової бібліотеці мови програмування Сі в ОС Plan 9, а також в Stackless Python та Go.
Реалізації каналів
Канали, створені за аналогією з моделлю CSP, є синхронними: процес, що очікує одержання даних з каналу, блокується, доки дані не надійдуть у канал. Такі реалізації називають «rendezvous». Типові операції над синхронними каналами представлені на прикладі інтерфейсів каналів бібліотеки libthread для мови C системи BSD:
Channel *ch; ch = chancreate(int elemsize, int bufsize);
- Відправлення в канал:
int chansend(Channel *c, void *v)
- Отримання з каналу:
int chanrecv(Channel *c, void *v)
Див. також
Примітки
- . Архів оригіналу за 9 листопада 2020. Процитовано 7 липня 2017.
- . Архів оригіналу за 18 червня 2017. Процитовано 7 липня 2017.
- LIBCCCO (3) // BSD library[недоступне посилання з липня 2019]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Kanal angl Channel programnij mehanizm vzayemodiyi mizh procesami i yih sinhronizaciyi pri peredachi danih obminu povidomlennyami Povidomlennya mozhut buti nadislani cherez kanal i inshij proces abo potik sho maye posilannya na kanal mozhe otrimuvati povidomlennya z kanalu yak z fajlovogo potoku Rizni realizaciyi kanaliv mozhut buti sinhronnimi abo asinhronnimi vikoristovuvati abo ne vikoristovuvati buferizaciyu povidomlen Kanali ye osnovopolozhnim ponyattyam dlya realizaciyi pidhodu i z yavilisya u vzayemodiyuchih poslidovnih procesah CSP formalnoyi modeli paralelizmu Kanali vikoristovuyutsya v bagatoh movah programuvannya takih yak Occam Limbo cherez movi Newsqueak i Alef dlya virishennya zadach paralelnih ta konkurentnih obchislen Voni takozh vikoristovuyutsya v potokovoyi biblioteci movi programuvannya Si v OS Plan 9 a takozh v Stackless Python ta Go Realizaciyi kanalivKanali stvoreni za analogiyeyu z modellyu CSP ye sinhronnimi proces sho ochikuye oderzhannya danih z kanalu blokuyetsya doki dani ne nadijdut u kanal Taki realizaciyi nazivayut rendezvous Tipovi operaciyi nad sinhronnimi kanalami predstavleni na prikladi interfejsiv kanaliv biblioteki libthread dlya movi C sistemi BSD Stvorennya kanalu fiksovanogo abo zminnogo rozmiru funkciya povertaye vkazivnik abo posilannya Channel ch ch chancreate int elemsize int bufsize Vidpravlennya v kanal int chansend Channel c void v Otrimannya z kanalu int chanrecv Channel c void v Div takozhNeimenovanij kanal Imenovanij kanalPrimitki Arhiv originalu za 9 listopada 2020 Procitovano 7 lipnya 2017 Arhiv originalu za 18 chervnya 2017 Procitovano 7 lipnya 2017 LIBCCCO 3 BSD library nedostupne posilannya z lipnya 2019