いっきのblogスマートフォン用の表示で見るいっきのblog技術とか色々この広告は、90日以上更新していないブログに表示しています。技術ブログ前回Goのインタフェースについて書いた。(アイキャッチが更新されてない・・)今回はGoの真髄とも言える、ゴルーチンとチャネルによる並行処理(Concurrent)について学んでいく。間違えやすいのだが、並行処理は並列処理と概念的に異なる。こちらの記事がわかりやすかったので、引用させていただく。freak-da.hatenablog.com並行は1人の人が複数の仕事をし、並列は複数の人が複数の仕事をしている状態だ。いっても、並行処理は擬似並列ともいえるので、日本語的には「並列処理」を使っても問題ないと思う。この辺りも面白かった。数千のスレッドしか作れないのか?Go言語のConcurrencyについて興味がある人は以下を読むと良さそう。自分は近々届くので、また別途まとめたい。www.oreilly.co.jpGoroutineで並行処理を行う。Goroutineの実装は簡単で、関数の前にgoをつけるだけだ。これだけで並行処理がとりあえずは実装できる。https://go-tour-jp.appspot.com/concurrency/1並行処理のプログラミングをする際は、mainでの処理とは別に処理が走ってしまうので、Channelをうまく使って制御したり、Sleepで待つという方法もある。Sleepは処理が終わる終わらないに限らず、その時間しかまたないのでよくない。Goをやってもあまり理解しなかったが、以下の記事がよかったのでこちらを見た方がいい。channelは値をやり取りをするためのキューみたいなもんだ。goroutine(スレッド)間で値の受け渡しを安全にできるので、とても簡単に扱える。Goの最後に、goroutineの問題があったので解いて見た。},}すでにクロールしたURLを判定する処理に、sync.Mutexを最初入れてたが、入れなくてもできたのでちょっと怪しい。キモとしては、channel型のquitに値を入れ、<-quitでgoroutineの処理を待つことができる。終わりにGoの勉強を駆け足でやってみた。最初は意味がわからなかったが、毎日少しずつ見ていくと慣れていくもんだな。次からはGoでAPIサーバー作ることをしようかな。(1)はてなブログをはじめよう!kzkohashiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。