並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 18 件 / 18件

新着順 人気順

Goroutineの検索結果1 - 18 件 / 18件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

Goroutineに関するエントリは18件あります。 golanggoroutinego などが関連タグです。 人気エントリには 『Goroutine はなぜ軽量スレッドと称されるのか』などがあります。
  • Goroutine はなぜ軽量スレッドと称されるのか

    Concurrency is the ability of two or more threads to execute in overlapping time periods. Parallelism is the ability to execute two or more threads simultaneously. 並行処理は、複数個のスレッドを共通の期間内で実行する能力のことです。 並列処理は、複数個のスレッドを同時に実行する能力のことです。 構成と実行並行処理:複数の処理を独立に実行できる 構成 のこと並列処理:複数の処理を同時に 実行 すること Go 公式ブログの The Go Blog - Concurrency is not parallelism の記事の中でも、並行と並列は異なる概念であることが述べられています。 In programming, concurrenc

      Goroutine はなぜ軽量スレッドと称されるのか
    • goroutineを作ってみる。Rustで - エムスリーテックブログ

      この記事はエムスリー Advent Calendar 2025 2日目 兼 マネジメントチームブログリレー9日目の記事です。 こんにちは、エンジニアリンググループ General Manager 兼 基盤チームリーダーの横本(@yokomotod)です。 今回はgoroutineについての自由研究です。 「軽量」「何万個も作れる」「並行処理が簡単に書ける」...そんなgoroutineの裏側はどうなっているんでしょうか。 なぜOSスレッドより「軽い」の? グリーンスレッドとは違うの? なぜパフォーマンスが高いと言われるの? この記事では、goroutineのようなランタイムをRustで自作することで、これらの疑問に答えることを目指しました。 ソースコードの全体は以下のリポジトリで公開しています。 github.com なぜRust? OSスレッドは重い、のおさらい グリーンスレッドを作って

        goroutineを作ってみる。Rustで - エムスリーテックブログ
      • 言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)

        Twitterで "green thread" という単語をたまたま見かけたので、知っていることをつぶやいたよ。 Green thread 言語のスレッドとOSのスレッドの関係 N:1 mapping 言語のスレッドの全てがひとつのOSのスレッドの上で実行されるもの。その代表が上記のJavaのgreen thread。 OSのシステムコールを呼ぶときには必ずnonblockingモードを使い、EAGAIN または EWOULDBLOCKが返ってきたときには他のスレッドの実行権に譲るようにする必要がある。うっかりシステムコールでブロックされてしまうと、全部のスレッドが巻き添えになって動けなくなる。 スレッドの生成やコンテキストの切り替えは軽い。しかし、マルチコアを生かすことができないため、シングルコアの環境でのみ使用される。 1:1 mapping OSのスレッドと言語のスレッドが1対1対応

          言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)
        • Go の goroutine / channel は全然簡単じゃないので errgroup を使おう - 音速きなこおはぎ

          技術記事です。今日は Go の golang.org/x/sync/errgroup についてです。 TL; DR Go が並行処理を得意とするのは事実だけど、とはいえ正しく使うのは難しい(特に channel)。 errgroup なら「並行でダウンロードする」のような頻出パターンをとても簡単かつ安全に使えるので、まずはこれで美味しいところだけ頂いてしまおう。 重い処理を並行にすればあなたのプログラムはカジュアルに数倍速くなる。 多分 errgroup だけで現実の要件の85%くらいはカバーできるはず。 channel も含めてちゃんと使いこなしたいと思ったら、Go 言語による並行処理 がおすすめです。 errgroup とは ドキュメントはここを参照してください。説明を読むよりコード例で見たほうが早いと思うのでこちらをどうぞ。 package main import ( "fmt" "

            Go の goroutine / channel は全然簡単じゃないので errgroup を使おう - 音速きなこおはぎ
          • Goroutineの使い方

            この記事はGo 言語 Advent Calendar 2023のシリーズ2の4日目の記事です(穴があったので入りました!)。 goroutineの特徴 コルーチンをベースにコルーチンの以下の点を改良 言語組み込みワード「go」にて起動できる M:Nスレッドシステム採用によりマルチコア分散処理が可能 ブロッキングを検出したらネイティブスレッドが独立 プリエンプティブ性を追加(Go1.14以降) 以上により、goroutineスレッドシステムはコードを書く人にとって「ネイティブスレッド」の感覚で実装を書くことができ、「コルーチン」のようにメモリやタスクスイッチ負荷が小さく、「コルーチン」のような面倒な制約(期待するレイテンシ以上にCPUビジーにしてはいけないなど)も無いといういいとこどりのスレッドシステムになりました。 ネイティブスレッドライクによる特性 ネイティブスレッドを使ったプログラミン

              Goroutineの使い方
            • Go言語の平行処理をやってみよう!【goroutine】 - RAKUS Developers Blog | ラクス エンジニアブログ

              はじめに おはようございます、こんにちは、こんばんは、rks_hrkwと申します。 もう1月も終わりですね。皆様いかがお過ごしでしょうか。 この記事はGo言語といえばの機能の一つである、ゴールーチン(goroutine)の入門記事となっております。 この記事は Go触ってみたけどまだゴールーチンは勉強してないよ Go触ったことないけどGoでの平行処理に興味があるよ という方向けです。 ※入門記事のため細かい箇所や複雑な箇所は説明を省いている可能性がありますご了承ください。 また、Goの環境構築については以下の記事をご参照ください。 tech-blog.rakus.co.jp 目次 はじめに 目次 並行処理って何? ゴールーチン ゴールーチンを書いてみよう 1行消す前の処理順 1行消した後の処理順 syncパッケージ sync.WaitGroup さいごに 参考文献 並行処理って何? 並行処

                Go言語の平行処理をやってみよう!【goroutine】 - RAKUS Developers Blog | ラクス エンジニアブログ
              • goroutine leakを解消したい!

                この記事は、Magic Moment Advent Calendar 2023 15日目の記事です。 こんにちは! Magic Moment で Backend Engineerをしている 大塚 です。 Magic MomentではGo言語によるマイクロサービス開発をしているのですが、ある日、あるサービスのメモリ使用量が継続的に上昇する現象を観測しました。 そこで、どういった調査をしてどのように解消までいったかをまとめました。 メモリ使用量の上昇を観測 メモリ使用量が日々上昇していることが確認できます。さっそくどこで何が原因でメモリリークしているか確認してみます。 Cloud Profilerで確認 以前よりCloud Profilerを導入していたため、まずはCloud Profilerでメモリ使用量やgoroutineの数を確認しました。 Cloud Profilerについては弊社Te

                  goroutine leakを解消したい!
                • Goroutineよりも高級で、Async/Awaitほど世界を分断しない、Oxという選択肢 - Lambdaカクテル

                  他の言語の非同期プリミティブと比べてもOxかなり良いな〜という記事です。 先日Ox v1.0.0がリリースされた。Oxはプログラミング言語Scalaの非同期処理ライブラリで、Java 21から搭載されたVirtual Threadの機能を活用して、非同期処理のための道具を使いやすい形で提供してくれる。 github.com 今回ついに1系がリリースされたので、改めてOxを紹介し、他の言語における非同期処理プリミティブと何が違うのか、どう便利なのかを紹介していければと思う。OxはScalaのライブラリだが、Scalaを知っている人も知らない人でも読めるようなコードになっているので安心してほしい。Oxの詳細はドキュメントを参考にしてほしい。 というのも、以前Oxをフィーチャーした記事を書いたことがあったが、まだメジャーバージョンが1に到達していないのもあり、あまり深く踏み込むことはしていなかっ

                    Goroutineよりも高級で、Async/Awaitほど世界を分断しない、Oxという選択肢 - Lambdaカクテル
                  • ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル

                    Channelスタイルの並行処理の記述を(もちろん型安全に)可能にするライブラリOxについて調べて試してみた。結論から言うと書き味がめちゃくちゃ良くて面白い。 ソースコードも置いておく。 github.com Ox Oxとは、sttpなどの開発でお馴染のSoftwareMillによって開発されているScala用の非同期ライブラリである。まだ非常に若く、活発に開発されている。 github.com Oxの特徴は、というか目的といっても差し支えないのだが、それはChannel指向の非同期処理、つまりGoroutineをScalaの上で実現している点だ。Goユーザならすぐに理解できるだろう。 百聞は一見に如かず。こんな感じのコードを書くことができる(v0.0.25時点)。 import ox.* import ox.channels.* import scala.concurrent.durat

                      ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル
                    • Go 1.26 リリース連載 Goroutine Leak Profiles | フューチャー技術ブログ

                      はじめにGo 1.26 リリース連載の 2 本目です。 本記事では Go 1.26 で追加された Goroutine Leak Profiles について紹介します。 アップデートの概要goroutine のリークを検知するためのプロファイルが runtime/pprof に追加されました。 これまでは Uber 社が公開している goleak などを用いてリークを検知するのが一般的なプラクティスでしたが、Go 標準のプロファイル機能を利用して検知ができるようになりました。 リリースノート を参照し、ポイントだけ先にまとめると次の通りです。 runtime/pprof に新しいプロファイル goroutineleak が追加されたnet/http/pprof のエンドポイントとして /debug/pprof/goroutineleak も追加されたGo 1.26 では GOEXPERIME

                        Go 1.26 リリース連載 Goroutine Leak Profiles | フューチャー技術ブログ
                      • Goの並行処理入門 - Goroutine基礎編 - Yappli Tech Blog

                        はじめに こんにちは。昨年の11月にYappliへ入社したしがないサーバーサイドエンジニアの佐野(@Kiyo_Karl2)です。 自分はYappliに入社するまでGo言語を利用した経験が無く、言語仕様についての理解がまだ浅いと感じる部分があるなと思っています。 そのため、今回はGo言語の最大の特徴でもあるGoroutineについてまとめてみました。 本記事は、4本の連載記事の1本目となります。 Goの並行処理入門-Goroutine基礎編 ←今ここ Goの並行処理入門-syncパッケージ編 Goの並行処理入門-channel編 Goの並行処理入門-select編 対象読者 Go言語の基礎はわかっているが、Goroutineについてはあまり理解していない メモリ、プロセス、スレッド、並行処理、並列処理といったワードについて概要とその違いを理解している 連載記事を通して取り扱わないこと 本連載

                          Goの並行処理入門 - Goroutine基礎編 - Yappli Tech Blog
                        • 【Go言語入門】goroutineとは? 実際に手を動かしながら goroutineの基礎を理解しよう!

                          【Go言語入門】goroutineとは? 実際に手を動かしながら goroutineの基礎を理解しよう! はじめまして。2022年4月に中途入社し、現在Analytics Delivery Divisionでバックエンド開発をしているエンジニアのナムです。ARISE analyticsに入社してから開発言語としてGoを使うことになりました。Goの特徴・メリットはいろいろありますが、今回はその中でもgoroutineについて簡単に話したいと思います。 goroutineとは goroutineは「Goでプログラムの同時性を簡単に具現し、既存の単純スレッド基盤に比べて効率的な動作を遂行するために作った作業単位」です。全てのGoプログラムは必ず1個以上のgoroutineを持ち、常にバックグラウンドで動作します。それぞれのgoroutineは独立的に実行されます。goroutineの特徴は非常に

                            【Go言語入門】goroutineとは? 実際に手を動かしながら goroutineの基礎を理解しよう!
                          • JavaScriptとGoの速さの違いはどこから来るのか -- Worker Threads vs goroutineで読み解く並行処理

                            はじめに 「goroutine を1万個立てても大丈夫」 -- Go を触ったことがある方なら、一度は聞いたことがあるかもしれません。一方、JavaScript の Worker Threads を1万個起動したら...おそらくマシンが悲鳴を上げます。 同じ「並行処理」なのに、なぜこれほど違うのでしょうか。 この記事では、JavaScript Worker Threads と Go goroutine の並行処理モデルの違いを、ランタイムの設計思想にまで掘り下げて解き明かします。対象読者は、JS か Go のどちらかを使ったことがある方です。並行処理が初めてでも問題ありません。 読み終わるころには、「goroutine は軽量、Worker Threads は重い」という表面的な理解ではなく、なぜそうなるのかをアーキテクチャの根本原理から説明できるようになります。 この記事で学ぶ内容を整理

                              JavaScriptとGoの速さの違いはどこから来るのか -- Worker Threads vs goroutineで読み解く並行処理
                            • Goを用いたPOS連携実装の学びとTIPS チャネルとgoroutineをどうビジネスロジックに当てはめるか | ログミーBusiness

                              Goの初心者から上級者までが1年間の学びを共有する勉強会、「GeekGig #1 ~Goと私の一年~」。ここで株式会社Showcase Gigの照井氏が登壇。Goを用いたPOS連携実装で学んだことを紹介します。 アジェンダと自己紹介照井寛也氏(以下、照井):「POSレジとGo」というタイトルでさっそく発表します。今回話す内容ですが、チャネルとgoroutineを、実際のビジネスロジックでどのように使っているかの事例の共有と、そこから得た学びを共有します。 アジェンダとしてはこのようなかたちになっています。まず自己紹介をし、Showcase Gigが提供する次世代店舗プラットフォーム「O:der(オーダー)」とPOSレジの関係性、そこからチャネルとgoroutineを用いたPOS連携開発について話します。あとはそれらを開発実装したうえでの学びを共有します。 というところで、さっそく自己紹介に

                                Goを用いたPOS連携実装の学びとTIPS チャネルとgoroutineをどうビジネスロジックに当てはめるか | ログミーBusiness
                              • GitHub - felixge/fgtrace: fgtrace is an experimental profiler/tracer that is capturing wallclock timelines for each goroutine. It's very similar to the Chrome profiler.

                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                  GitHub - felixge/fgtrace: fgtrace is an experimental profiler/tracer that is capturing wallclock timelines for each goroutine. It's very similar to the Chrome profiler.
                                • 【Go】goroutineリークで本番環境のメモリを食いつくしかけた話

                                  背景 業務中にサーバーのメモリ使用率が異常に上昇し、プロセスがメモリを食いつくしかける問題に遭遇した。 当時、goroutineについて深く理解しないまま「goをつければ非同期で動いてくれるんでしょ」くらいの認識でFire-and-Forget的に処理を投げていた。処理自体は複雑でも重いものでもなかったが、goroutineの終了条件を考慮せずに書いていたため、気づかないうちにgoroutineが溜まり続け、サービスが落ちかける事態になった。 この経験から「goroutineリーク」という概念を体系的に理解したくなり、実際にリークを起こすコードを書いて動かしてみることにした。本記事では、最もシンプルな「ブロッキング型」のgoroutineリークを解説する。 goroutineリークとは goroutineが終了せずにメモリ上に残り続ける現象のこと。 Goのガベージコレクタ(GC)は「待機中

                                    【Go】goroutineリークで本番環境のメモリを食いつくしかけた話
                                  • goroutineの仕組みについて

                                    Go Conference 2021 Autumnで発表した資料です

                                      goroutineの仕組みについて
                                    • goroutineリークを排除して安全に並行処理を行う方法 | ビジネスとIT活用に役立つ情報(株式会社アーティス)

                                      goroutineはgoキーワードを関数の前に書くことで簡単に起動することができます。 しかしながら、goroutineはランタイムによってガベージコレクションされないため、正常に終了させていない場合はリークしていきます。 野放しになったgoroutineたちによってプロセスごと停止にならないよう、正常に終了させましょう。 goroutineリークしている例 それでは、意図的にgoroutineリークを発生させてみましょう。 起動しているgoroutineの数をカウントするため、runtime.NumGoroutine()を使用して現在のgoroutine数を標準出力に表示させています。 go playground package main import ( "fmt" "runtime" "time" ) func main() { fmt.Printf("before leak:\t%

                                        goroutineリークを排除して安全に並行処理を行う方法 | ビジネスとIT活用に役立つ情報(株式会社アーティス)
                                      1

                                      新着記事