Go: práce s kanály

Jednou ze skvělých věcí na Go jsou gorutiny, pomocí kterých zajišťuje concurrency. A aby vše fungovalo jak má, potřebujete nějak synchronizovat zpracovávaná data mezi jednotlivými gorutinami.

A právě k tomu se hodí kanály, channels. Kanály jsou jeden z prostředků jazyka, jak řídit flow mezi rádoby paralelně prováděnými částmi aplikacemi, gorutinami.

Díky kanálům pak můžete naplnit jeden z konceptů Go Do not communicate by sharing memory; instead, share memory by communicating.

A věřte nebo ne, i na úrovni práce s channels pak najdete nějaké návrhové vzory:

Fan out

Z jednoho vstupního kanálu multiplikujete výstup do více výstupních kanálů:

Fan In

Spojujete více vstupních kanálů do jednoho výstupního.

Closing channel

Closing a channel indicates that no more values will be sent on it. This can be useful to communicate completion to the channel’s receivers

Ve zkratce…

Uvedl jsem 3 asi nejpoužívanější channles návrhové vzory. Nicméně představivosti se meze nekladou a je jen na vás, jak skrze kanály zajistíte flow control vaší aplikace.

Další info najdete přímo na Golang blogu.