usakdsteen

ゆうさくですてぃーん

ごう:ちゃねるしぇあ

じっけん

Goのチャネルをいくつかのgoルーチンシェア

 

同じチャネルからデータ受け取るgoルーチンを10個生成

※データ受け取ったら表示するを無限ループ繰り返すgoルーチン

 

forループで30回ほどデータを送信する

・ 1秒ごとにデータを送信するパターンA

・明示ウェイトなしにデータを送信するパターンB

 

共通

 goルーチンの実行開始順はgoルーチンの生成順とは違っていた

 goルーチンの終了順はバラバラ(開始順でも生成順でもない)

 

パターンA(ローカル実行)

 goルーチンの実行開始順にデータを受け取っていた

パターンB(ローカル実行)

 一番最初に開始したgoルーチンが多めにデータを受け取った

 が、それ以降はgoルーチン開始順にデータを受け取っていた

パターンB(IDEONE実行)

 一番最初に開始したgoルーチンだけがデータを受け取った(笑)

 

 

 

ソース https://ideone.com/Ji8mr2

 

結果キャプ

 

パターンA(ローカル実行)

f:id:neetsdkasu:20200910215529p:plainf:id:neetsdkasu:20200910215554p:plain

 

 

パターンB(ローカル実行)

f:id:neetsdkasu:20200910215637p:plainf:id:neetsdkasu:20200910215703p:plain

 

 

パターンB(IDEONE実行)

f:id:neetsdkasu:20200910220024p:plainf:id:neetsdkasu:20200910220052p:plain