Closed2

Go読書会メモ

otokunaga2otokunaga2

5 関数

  • 関数はファーストクラス、変数に代入したり、関数へ渡したり関数から返したりできる
  • スタックは1kb
  • 関数のBodyがGoの実装にない場合→Assemblyで実装されている
#memo
# go doc -srcのオプションでソースコードを確認できる(便利)
go doc -src io.Reader
otokunaga2otokunaga2

ゴルーチンとチャンネル

happens before

https://go.dev/ref/mem
こちらの日本語記事の方が個人的にフォローしやすい。
http://go.shibu.jp/go_mem.html

どういう操作をしたら保証される。
Java synchronize
volatile宣言
言語によってメモリモデルは異なる。

naturals := make(chan int)
squares := make(chan int)//バッファなしチャンネル

cap(chan)

チャンネルのバッファあり、なしにするかはcase by caseとのこと。

Goルーチンは一斉に走り始めない。
→テストで処理計測する際には、一斉に走り始めるようなコードを書く必要があるとのこと。
プログラムについてはmattnさんのブログにコード例が記載されているように
sync.Cond、broadcastを使って実現できる。

https://mattn.kaoriya.net/software/lang/go/20140625223125.htm

CPUヘビーな処理については
コアが2つのマシンでGoルーチンもCPUコアに合わせて実行するようにプログラムを記述する。
deeeetさんのブログが詳しい。
https://deeeet.com/writing/2014/07/30/golang-parallel-by-cpu/

このスクラップは2022/08/03にクローズされました