golang

goroutine は OS thread も使う

goroutine は GOMAXPROCS >= 2 の場合は OS の thread も使って動くので、 そもそもgoroutineはスレッドじゃない。 そう、goroutineはスレッドじゃない。Big Sky :: 非同期UI この部分はちょっと誤解を招くかもなあと思いました。実際に複数の goroutine か…

GOMAXPROCS でマルチコアCPUを有効に使う

via #golang でマルチコアをつかいきれた人っているの? http://twitter.com/tokuhirom/status/6229784117 # 何か、以下のような意味じゃない気もするんだけどとりあえずお互いに無関係な (フィボナッチ数を求める) goroutine を 3つ走らせて、それに対して環…

Go と Perl で sha1sum(md5sum) コマンドっぽい機能を実装した場合のソースコード比較

同じ機能を両方で書いてみたらどんな感じになるかなと。 起動されたコマンド名から SHA1 or MD5 を求めるように切り替わる コマンドライン引数があれば引数のファイルについて、なければ標準入力からの入力について SHA1(MD5) hash を求めて表示 こんな仕様…

TCPのテスト用に空いているポートを探す

perl でいうと、Test::TCP::empty_port() が欲しかったのでちょっと書く。 import ( "net"; "fmt"; ) func empty_port() int { for port := 10000; port < 20000; port++ { addr := fmt.Sprintf("localhost:%d", port); l, err := net.Listen("tcp", addr); …

100行ぐらいで分散しないKVSを実装する(Go)

54行で分散KVSを実装する(レプリケーション機能付き)をみて、Go でとりあえず分散もレプリケーションもしないのを書いた。といっても rpc ライブラリは付いてきているので、それを使うだけ。http://golang.org/pkg/rpc/ サーバ側の保存は map[string] stri…

Coro と Go で並列実行数の制御

http://d.hatena.ne.jp/tokuhirom/20090710/1247196134 この Coro の例を Go でやってみます。まず特定数 (ここでは 3) の worker thread を立ち上げておいて、そこにメッセージを送って仕事させるモデル。メッセージのやりとりに Coro::Channel を使います…

Go でテンプレートエンジン (json template)

http://d.hatena.ne.jp/tokuhirom/20091117/1258418742 をみて。 Go に付いてくるテンプレートエンジンは json-template て奴でした。 記法は リファレンス にありますが、テストケース を眺めると雰囲気がつかみやすいかも。こんなコードを書いて package m…

Go をちょっと試すのに便利な wrapper 二題

8g とか 6l とかのコマンドが (分かりにくい|打ちづらい) ということに定評のある Go ですが、パッケージを作るような場合は Makefile をこんな風に書くと make 一発でことが済むので簡単です。via http://blog.yappo.jp/yappo/archives/000697.htmlでもちょ…