ホームページ  >  記事  >  バックエンド開発  >  Go FAQ には「Goroutine ID がありません」と表示されますが、runtime.Stack から取得できます。それは何ですか?

Go FAQ には「Goroutine ID がありません」と表示されますが、runtime.Stack から取得できます。それは何ですか?

WBOY
WBOY転載
2024-02-05 22:51:03548ブラウズ

Go常见问题解答说“没有goroutine ID”,但我们可以从runtime.Stack中获取它。它是什么?

質問内容

go faq で「Goroutine ID がないのはなぜですか?」という質問に回答しました。

リーリー

runtime.stack() を使用して goroutine ID を取得できるように見えるため、「一意の識別子は公開されない」という説明は信じられません。

######質問######

go faq 回答の「一意の識別子」と runtime.stack によって抽出された goroutine ID の違いは何ですか?
  1. go faq の回答が「一意の識別子を公開しない」のはなぜですか?
  2. 「なぜ goroutine ID がないのか?」の答えを明確に理解したいです。

  3. runtime.stack() は goroutine ID を提供するようです。 https://go.dev/play/p/5b6fd7c8s6-
リーリー

また、ebpf を通じて goroutine ID を取得する別の方法もあります。

ebpf を使用して goroutine id を取得する方法

正解


Go FAQ の「一意の識別子」とランタイムによって抽出された goroutine id とは何ですか。違い?

FAQ には、ゴルーチンは
一意の識別子、名前、またはデータ構造をプログラマに公開しないと記載されています。

ランタイムには Goroutine を識別する方法が必要ですが、その識別子を取得する方法はサポートされていません。

Go ドキュメントでは、runtime.Stack によって返されるスタック トレースの形式やゴルーチン番号の意味が指定されていません。質問内のコードは現在一意の ID を取得する可能性がありますが、将来的にコードが取得するという保証はありません。

以上がGo FAQ には「Goroutine ID がありません」と表示されますが、runtime.Stack から取得できます。それは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。