問題タブ [concurrent-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - すべてのゴルーチンがスリープ状態です - デッドロック! - - - - エラー
相互に整数を送信する 3 つの同時進行の go ルーチンを作成したいと考えています。これで、コードは適切にコンパイルされましたが、最初の実行後に「すべてのゴルーチンがスリープ状態です - デッドロック!」というエラーが発生します。エラーを見つけようとしましたが、コードロジックでエラーを見つけることができませんでした。コードの間違いを見つけるのを手伝ってくれますか? 私のコードを以下に示します。前もって感謝します。
Routine2 と Routine3 を go ルーチンとして宣言すると、なぜ出力が [出力なし] になるのか、誰か教えてください。私は GO が初めてで、「http://golang.org/doc/effective_go.html#concurrency」から理解したように、go は同じアドレス空間で他のゴルーチンと並行してゴルーチンを実行するために使用されます。では、すべてのルーチンが実行されているのに、出力が [出力なし] であるという問題は何ですか。
プログラムをより明確にするために:実際に私がするのは、2つのルーチンごとに2つのチャネルを作成し、1つのチャネルを使用してintを他のチャネルに送信し、そのルーチンから別のチャネルでintを受信することです。たとえば、ルーチン 1 と 3 の間のチャネルは command13 と response13 です。ルーチン 1 は、command13 を使用して int を送信し、response13 を使用してルーチン 3 との間で int を受信します。さて、3 つのルーチンが並行しており、受信メッセージまたは送信メッセージを処理する特定のルーチンがあるのに、なぜデッドロックに陥るのでしょうか?
go - すべての goroutine をスローしてスリープ状態にする - デッドロック! ------- Google の GO のエラー
相互に整数を送信する 3 つの同時進行の go ルーチンを作成したいと考えています。これで、コードは適切にコンパイルされましたが、最初の実行後に「スロー: すべてのゴルーチンがスリープ状態です - デッドロック!」というエラーが発生します。エラーを見つけようとしましたが、コードロジックでエラーを見つけることができませんでした。コードの間違いを見つけるのを手伝ってくれますか? 私のコードを以下に示します。
java - Javaでバイナリセマフォクラスを実装するには?
「標準」のセマフォ クラスを Java で実装する方法がわかります。ただし、バイナリ セマフォ クラスを Java で実装する方法がわかりません。そのような実装はどのように機能しますか? セマフォ上のスレッドを起動および停止するには、wake メソッドと notify メソッドをいつ呼び出す必要がありますか? バイナリ セマフォが何であるかは理解していますが、それらをコーディングする方法がわかりません。
編集注:「BINARY」セマフォクラスと言ったことに注意してください。私がすでに行った標準のセマフォクラスは正しいことを知っているので、標準のセマフォクラスには興味がありません。
concurrency - Goプログラミング言語相互同時実行
私は以下のような2つの同時goルーチンを持っています、
いくつかの組み込み関数を使用してクリティカルセクションを実装することは可能ですか?
java - セマフォを使用して生産者/消費者を解決する方法は?
セマフォを使用する必要がある生産者/消費者と同様の問題をコーディングする必要があります。私はいくつかの解決策を試しましたが、どれもうまくいきませんでした。最初にウィキペディアで解決策を試しましたが、うまくいきませんでした。私の現在のコードは次のようなものです。
コンシューマーのメソッド実行:
プロデューサーのメソッド実行:
上記のコードでは、コンシューマースレッドが位置を読み取り、次に別のスレッドが同じ位置を読み取り、プロデューサーがその位置を埋めることはありませんでした。次のようになります。
go - 相互に並行する Go ルーチンでのデッドロック エラー
以下のような 3 つの同時実行ルーチンがあります。
この論理コードは、毎回デッドロック状態を引き起こします。実際に実行すると、ルーチン1のprint文(*印の間の文)だけを何度も実行するだけで(私のprint文は1つだけですが)、デッドロックエラーが発生します。コードロジックの何が問題なのか、誰でも教えてもらえますか。ありがとう。
注意。詳細については、コードがhttp://play.golang.org/p/pW6aXryUaKにあり、行番号 290 のみが実行されています。エラーを含まない元のコードは、play.golang.org/p/UL3rj8DJRk にあります。それらにロックとロック解除を追加するだけです。ありがとう。
別のポイントを追加したい: play.golang.org/p/UL3rj8DJRk のコードでは、次のようなさまざまな print ステートメントの出力を見つけることができます。 ]。ただし、3 つの同時実行ルーチンの結果として、print ステートメントが適切に実行されないことがあります (つまり、全体が印刷されないことを意味します。プロセス [番号] がプロセス [番号] で [int] をプロセス [番号] に送信するなど、別の印刷によって挿入されるものがあります)。 ]))。これを管理する方法を教えてくれる人はいますか?
concurrency - 同時実行ルーチンの相互実行に関する問題
私のコードには、3つの同時ルーチンがあります。私は自分のコードの概要を簡単に説明しようとしていますが、
2つの間のコード(2つのスターマーク間のコード)が実行されている間、制御のフローは他のgoルーチンに移動してはなりません。たとえば、routine1が2つのスター間のイベント(送信イベントと印刷イベント)を実行している場合、ルーチン2と3をブロックする必要があります(つまり、実行フローはルーチン1からルーチン2または3に渡されません)。最後の印刷イベントが完了した後、実行の流れはルーチン2または3に渡される可能性があります。誰かが指定することで私を助けてくれますか、どうすればこれを達成できますか?WaitGroupで上記の仕様を実装することは可能ですか?WaitGroupを使用して上記の例を実装する簡単な例を挙げて、誰かに教えてもらえますか。ありがとう。
NB:これはこれの繰り返しの質問かもしれません。そのsync-lockメカニズムを使用して試しましたが、コードが大きいためにlock-unlockを適切に設定できず、デッドロック状態が発生している可能性があります(または私の方法でエラーが発生している可能性があります)。誰かが簡単な手順で私を助けてくれるので、私はこれを達成することができます。ここに私のコードの簡単な例を示します。ここでは、2つのプリントを配置し、ミューテックス内にイベントを送信します(ルーチン1の場合)。したがって、ルーチン2はそれを中断できません。どうすればそれが可能か教えてくれませんか。与えられた1つの可能な解決策、 エラーを与えるhttp://play.golang.org/p/-uoQSqBJKS 。
boost - ロックフリープログラミングを深く使用する高レベルの抽象化が人気がない理由は何ですか?
私がロックフリープログラミングで集めたものから、正しく行うのは信じられないほど難しいです...そして私は同意します。いくつかの問題について考えるだけで頭が痛くなります。しかし、私が疑問に思うのは、なぜ高レベルのラッパーが広く使用されていないのですか(たとえば、ロックフリーキューなど)?たとえば、私が知る限り、ブーストにはロックフリーライブラリがありません。クリティカルセクションが負荷の大部分を占めるという事実を避けられないアプリケーションがたくさんあると思います。それで、理由は何ですか?それは...ですか...
- 特許-ロックフリープログラミングに関連するいくつかのものが特許を取得していると聞きました。
- パフォーマンス。
- グーグルとマイクロソフトはそのような内部ライブラリを持っていますが、それらのどれも公開されていません...
- 他に何かありますか?
だから私の質問は:なぜ「通常の」マルチスレッドプログラミングが「イン」であるのに、ロックフリープログラミングを深く使用する高レベルの抽象化があまり人気がないのですか?
編集:ブーストはロックフリーライブラリを取得しました:)
ios - どのViewControllerがアクティブかを知るにはどうすればよいですか?
NSOperationQueue を使用して画像をダウンロードしています。
reloadView
画像のダウンロードが完了したら、View Controllerのメソッドを呼び出したいと思います。
ただし、ダウンロードの進行中に、ユーザーが別のビューに移動した可能性はかなりあります。この別のビューにもreloadView
メソッドがあります (たとえば、最初のビューにはダウンロードされた画像の総数が表示され、2 番目のビューにはダウンロードされた画像のサムネイルが表示されます)。
基本的に私が欲しいのは、画像のダウンロードが完了するたびに、アクティブ ビュー コントローラーのメソッドを呼び出せるようにするreloadView
ことです。
これはどのように可能ですか?
c++ - MSVC のコンカレンシー ランタイムでの parallel_for_each と parallel_for の違いは何ですか?
parallel_for_each
次の形式です。
しかしparallel_for
、同様の形式でもあります:
Concurrency::parallel_for
マルチコアのプログラミングで使用されるとのConcurrency::parallel_for_each
アルゴリズムの違いは何ですか?