goroutine

    7

    2答えて

    私は愚かな基本的なスレッド演習として、sleeping barber problemをgolangに実装しようとしています。チャンネルでこれは非常に簡単にする必要がありますが、私はheisenbugを実行しました。つまり、私がそれを診断しようとすると、問題は消えてしまいます! 以下を考慮してください。 main()関数は、整数(または「顧客」)をshopチャネルにプッシュします。 barber()

    6

    2答えて

    は私が行くツアーexercise #71 を試してみました()fmt.Printを追加しない限り、選択とgorouteは停止しません。 ただし、go run 71_hang.go nogoodを使用すると、永遠に実行されます。 唯一の違いは、selectステートメントのdefaultにあるfmt.Print("")です。 私には分かりませんが、無限ループと競合状態の疑いがありますか?そして、私の解

    10

    1答えて

    私の場合、私は同時にwork()として働いている何千ものゴルーチンを持っています。私もsync()のゴルーチンを持っていました。 syncが起動すると、同期ジョブが完了してからしばらくの間、他のゴルーチンが一時停止する必要があります。ここに私のコードは次のとおりです。 var channels []chan int var channels_mutex sync.Mutex func wor

    59

    2答えて

    このコードは、呼び出された実行可能ファイルと同じフォルダ内のすべてのxmlファイルを選択し、コールバックメソッドの各結果に処理を非同期的に適用します(下の例ではファイル名のみが出力されます)。 メインメソッドが終了しないようにスリープメソッドを使用しないようにするにはどうすればよいですか?私は問題をチャネルの周りに私の頭をラップする(私はそれが、結果を同期するために何を仮定している)ので、任意の助

    12

    2答えて

    この質問に対する彼の答え:Golang for Windows erratic behavior? user @distributed同時のゴルーチンの共有変数へのアクセスをロック/同期することをお勧めします。 どうすればいいですか?問題について より: 私はこのコード(views上の閉鎖と返される関数)同時に複数のゴルーチン上で実行されているを取得する: func makeHomeHandler

    21

    2答えて

    Yahooを利用して、Yahoo Financialから株価スプレッドシートをダウンロードしたいと思います。私は自分のゴルーチンのすべての株式についてhttpリクエストをしています。私は約2500シンボルのリストを持っていますが、2500リクエストを並行して作るのではなく、一度に250を作るのが好きです。 Javaではスレッドプールを作成し、スレッドが解放されたときにスレッドを再利用します。私は似

    9

    2答えて

    は、簡略化した例として、以下のコードを検討: func printer(c <-chan int) { for { fmt.Print(<-c) } } func provide() { c := make(chan int) go printer(c) for i := 1; i <= 100; i++ { c

    4

    1答えて

    の値: - : に評価するだろう、それはエラーメッセージが表示されました fmt.Println(c <- x)を直前のループのために、以下のコードブロックに「X C <」かを確認します ./select.go:7:ステートメントcを送信< - xは値として使用されます。非ブロック送信用にselectを使用してください。 送信操作が成功した場合、「c <-x」はtrueと評価されますか。なぜ、Go

    29

    5答えて

    私はGoで書かれた長い実行サーバーを持っています。メインは、プログラムのロジックが実行されるいくつかのゴルーチンを起動します。その後、メインは役に立たない。メインが終了すると、プログラムは終了します。私が今プログラムを実行し続けるために使用している方法はfmt.Scanln()の単純な呼び出しです。私は他の人がどのようにメインから退出するのか知りたいです。以下は基本的な例です。ここではどのようなア

    1

    2答えて

    私は、次の3つの方法で入力のいくつかの種類を解析していたとします func parseHeader ([]byte) []byte func parseBody ([]byte) []byte func parseFooter ([]byte) []byte 彼らはすべて同じ入力の特定の部分を解析し、[]byteとしてそれを返すので、彼らはこのように使用することができます。 i := []