goroutine

    1

    1答えて

    私は最近、Goで同時にReadとCloseを正しく理解する方法がわかりません。私の特定のケースでは、私はシリアルポートでそれを行う必要がありますが、問題はより一般的です。 私たちは、物事を同期させるために特別な努力をしなければ、競合状態に陥ります。簡単な例: closing ================== WARNING: DATA RACE Write at 0x00c4200143

    0

    1答えて

    並列のゴルーチン間でチャネルを共有する方法を教えるためにこのサンプルコードを書いており、競合状態に遭っています。プログラムは、システム上に利用可能なCPUがあるように多くのゴルーチンを起動する必要があります。 blチャネルにアクセスする最初のゴルーチンは、チャネルをfalseにするように設定し、他のゴルーチンがstチャネル上のループにアクセスできないようにします。他のゴルーチンは、blチャネルにア

    0

    2答えて

    私はジョブディスパッチャであり、たくさんのTCPソケットから大量のデータを照合しているコードをいくつか持っています。このコードはLarge number of transient objects - avoiding contentionへのアプローチの結果であり、大部分はCPU使用率の低下と現在の問題ではありません。 時々、私のアプリケーションがロックアップし、データがまだ私のソケットから入って

    1

    1答えて

    チャンネルへの書き込み操作が起こらないという奇妙な状況に陥りました。 package main import ( "fmt" "time" ) func main() { c := make(chan int) s := make(chan bool) k := make(chan bool) fmt.Println("start

    2

    1答えて

    私のプログラムがデッドロックしている状況にあり、これをデバッグして、バッファされていないチャンネルにいくつの要素があるかを知りたい場合、Go ?次のコードは、出力は私が(さらに、それはまた、私は理由を見つけることができない何かである、デッドロック)予想通り2 package main import "fmt" func main() { channel := make(chan

    0

    2答えて

    私は新しいですが、ポイントがありませんが、Goチャネルはバッファされた最大チャネルサイズで制限されているのはなぜですか?たとえば、私はこの理由はそこにあるので、 channel := make(chan int, 100) のようなチャネルは、私がブロックせずにチャンネルに100個の以上の要素を追加することはできませんしますか?チャネルAPIはそれをサポートしていないため、動的にサイズ変更する

    5

    1答えて

    彼の話では、Rob Pikeは、ゴールールはスレッドと似ていますが、はるかに安価だと言います。なぜ誰かが説明できますか?

    1

    1答えて

    私が持っている問題は、「待っているルーチンをすべて伝える」ことです。 一部のgoルーチンは、シグナルを待つ前に、他のタスクを実行している可能性があります(以下のコードでは時間をシミュレートしています)。他のルーチンは、開始直後に信号を待つことがあります。私は、チャネルを使用することができます package main import ( "fmt" "sync" "t

    -2

    1答えて

    参照渡しの同じ変数を変更する複数のゴルーチンを実行しようとしています。 しかし、私はこれを実装した方法が機能的に間違っていると確信しています。私のテストでは動作しているように見えますが、第2のゴルーチンが最初のゴルーチンよりも実行にかなり長い時間がかかる場合、最初のゴルーチンが完了すると、このパターンが親関数を終了させるという感じがします。 あなたのご意見・ご提案・アドバイスをお待ちしております。

    0

    1答えて

    これは私の存在の悩みです。 getEC2Metricsはチャンネルに公開されているもののよう type ec2Params struct { sess *session.Session region string } type cloudwatchParams struct { cl cloudwatch.CloudWatch id string