https://golang.org/ref/mem#tmp_6
ゴルーチンの破壊
ゴルーチンの終了は、プログラム内の任意のイベントの前に発生することが保証されていません。たとえば、このプログラムでは:
VARストリング FUNCのハロー(){ ゴーFUNC(){= "こんにちは"}() プリント() }
割り当ては a
、他のゴルーチンによって観察されることが保証されていないので、任意の同期イベントが続いていません。実際には、積極的なコンパイラは全体の削除可能性がある go
文を。
ゴルーチンの効果は、他のゴルーチンによって観察されなければならない場合には、相対的な順序を確立するために、このようなロックまたはチャネル通信として同期機構を使用します。
チャネル通信
チャネル通信は、ゴルーチン間の同期の主要な方法です。特定のチャネル上の各送信は、対応する通常異なるゴルーチンに、そのチャンネルから受信するように適合されます。