Golangのchannelへのデータの送受信について




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

channel

Golangではchannelというキューのような仕組みがあります。channelを介してデータの受け渡しができるため、処理を分割して並列処理がしやすくなります。しかし、便利な半面むやみに使うと処理を追うのが大変になるので気をつけてください。

定義

channelにはcpacityというchannel内に保持しておけるバッファのサイズを定義することができます。バッファが0になるとchannelへのデータ送信はブロックされるので非常に重要な値となります。capacityを指定していない場合は0となります。

close

close()関数を使うとchannelを閉じることができ、受信側に閉じたことを知らせることができます。閉じられたchannelにはデータの送受信ができません。

送信

channelへの送信は<-でできます。capacityが足りなくなった場合、受信されて容量があくまで送信処理がブロックされます。

受信

受信方法はいろいろあるのですが一番基本的な2つを紹介します。

最初の方法はchannelから値だけを取得します。2つ目はokがfalseだった場合、channelがcloseされた通知を受け取り、vにはゼロ値が入ります。

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です