php 編集者の真一が、シンプルだけど面白い囲碁シミュレーションゲーム「同時実行問題」をお届けします。このゲームは同時プログラミングをテーマにしており、仮想世界で同時プログラミングの魅力を体験することができます。ゲームでは、プレイヤーは複数のタスクの同時実行を処理し、同時プログラミング能力をテストするコードを作成する必要があります。ゲームインターフェイスは簡潔かつ明確で、操作はシンプルで初心者が始めるのに適しており、プレイヤーが選択できる複数の難易度とチャレンジモードも提供します。初心者でも経験豊富な開発者でも、このシミュレーション ゲームでは同時プログラミングの楽しさを楽しむことができます。
私はポーランド出身の学生で、今学期から同時プログラミングコース(Go、Ada、および将来的にはいくつかの理論言語とCSP言語)を開始しました。正直に言うと、Golang は面白そうですが、少し混乱しています。結論から言うと、私の経験では、私は自分自身を平均以下のプログラマーと呼んでいます。基本的に、私のタスクはシミュレーションを作成することです。これを次のように説明します。
私のアイデアは、各旅行者の ID と座標を含む構造を作成し、その ID を移動意欲を表すチャネルに送信してから、移動方向をランダムに選択するというものです。
リーリー
wgs、ミューテックス、アトムなど、すべてのアイデアに少し圧倒されています。 ######解決######作業を同時に処理したい場合 (たとえば、カメラのスナップショットの撮影と旅行者の移動が同時に発生する可能性があります)、ゴルーチンは軽量のスレッドです。
チャネルは、Go ルーチン間でデータを転送するために使用されます。
共有メモリ (グリッド) にアクセスする 2 つのゴルーチンがあるため、競合状態を避けるためにミューテックスが必要です。これらのいずれかが実行されるたびに、「ロック」し、作業を実行してから「ロック解除」する必要があります。ロックを取得した最初のゴルーチンがロックを解除するまで、別のゴルーチンはロック ステップでブロックされます。読み取り/書き込みロックを使用してさらに最適化できます (読み取りロックが必要なのはカメラのみで、モバイル コルーチンには読み取り/書き込みロックが必要です)
以上が単純な Go シミュレーション - 同時実行の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。