php Xiaobian Yuzai は、同時実行 Golang プログラミングで異なる配列長を出力するという質問に答えます。並行プログラミングでは、複数のゴルーチンが共有リソースを同時に操作すると、競合状態が発生し、不確実な結果が生じる可能性があります。複数のゴルーチンが配列に対して同時に動作する場合、配列の長さが異なる場合があります。これは、ゴルーチン間の実行順序が不定であり、読み取りと書き込みの操作が同時に発生する可能性があり、結果として配列の長さが不一致になるためです。この問題を解決するには、ミューテックス ロックやチャネルなどのメカニズムを使用して、ゴルーチン間の同期と順次実行を確保し、特定の結果を得ることができます。
同時テスト用にgolangで簡単なプログラムを書いているのですが、毎回の大文字
の違いが分かりません 配列サイズ 出力してください!
出力:
リーリー リーリー リーリー リーリーdata := []rune{'a', 'b', 'c', 'd'} var capitalized []rune capit := func(r rune) { capitalized = append(capitalized, unicode.toupper(r)) fmt.printf("%c done!\n", r) } fmt.printf("before: %c\n", capitalized) for i := 0; i < len(data); i++ { go capit(data[i]) } time.sleep(100 * time.millisecond) fmt.printf("after: %c\n", capitalized)
データ競合が発生しています。
リーリーレーサー.ゴー:
リーリー以上がgolang の同時プログラミングで異なる配列長が出力されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。