問題タブ [condition-variable]

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.

0 投票する
2 に答える
502 参照

c - セマフォの用語

よく言われるセマフォ…ビジー状態で待機することはありますか? 私は用語と混同しています。私が導き出した結論のうち、どれが真実か教えてください。

a) スピンロックにはビジーな待機が含まれるため、それを避けるためにセマフォがあります。
b) セマフォは一種のスピンロックですが、忙しく待たずにセマフォを持つことができます
c) pthread_condition 変数はセマフォと同じことをしますか? もしそうなら、semaphore.h ライブラリのセマフォと同等ですか。両方が同じ機能を表している場合、私は混乱しています。

0 投票する
1 に答える
291 参照

network-programming - 条件変数 (POSIX 並行 API) を使用すると、並列ネットワーク コードの速度が本当に低下する可能性がありますか?

現在、複数のコンピューターで並列レンダリングを管理するアプリケーションをプログラミングしています。そのために、サーバー アプリケーションには、TCP 接続を管理するスレッドのプールがあり、質問ごとに 1 つのスレッドを使用しています。ネットワーク スレッドの 1 つがデータを受信した場合に他のスレッドに警告するために、すべての TCP スレッドで同じ条件変数を使用したいと考えています。

問題 : signalPOSIX API で関数を使用するには、ミューテックスを使用する必要があります。つまり、2 つのネットワーク スレッドが同時にデータを受信した場合、実行を継続するにはミューテックスが解放されるまで待機する必要があります。

現実的に、この条件変数を使用すると本当にコードが遅くなるでしょうか? また、使用したくない場合は、他のスレッド (wait条件変数を呼び出すスレッド) で、ループしてネットワーク スレッドが何かを受信したかどうかを確認する while 命令を作成することもできます。

どうもありがとう :)

0 投票する
0 に答える
50 参照

python - threading.Condition C API

Python C APIthreading.Conditionで直接公開されているようなオブジェクトはありますか? そうでない場合、どのような選択肢がありますか?

0 投票する
2 に答える
379 参照

c - 条件変数にはキューがありますか?

条件変数の待機操作を実装しています。条件変数の構造体があります。これまでのところ、私の構造体にはモニター、キュー、およびスピンロックがあります。しかし、条件変数がそれ自体でキューを持つべきかどうかはわかりません。私の通知は次のようになります:

しかし、通知機能と待機機能のどちらで、モニターの待機キューにエンキューおよびデキューする必要があるのでしょうか。

ありがとう

0 投票する
1 に答える
170 参照

c - 待機およびシグナル以外の pthread

インスタント メッセージング アプリケーションを開発しています。

これは私が助けを必要とする状況です: 私のコードのルーチン fgets() ユーザーが入力したメッセージ。ここで、メッセージをソケットなどに送信するルーチンを持つスレッドを起動する必要があります。これを行う方法がよくわかりません。

ミューテックスを使用している場合: 最初のスレッドを待機させたくありません。したがって、私はこれを使用したくありません。同様に、cond_variable は使用できません。

これの入手方法を教えてください。

0 投票する
2 に答える
211 参照

python - Python マルチスレッド: 条件変数を使用して 2 つのスレッドを同期するためのアドバイスが必要

マルチスレッドの基本的な概念しか知らないのですが、現在、助けが必要な状況に遭遇しています。

完了するタスクが 2 つあり、両方を継続的に実行する必要があります。問題は、最初のスレッドが最初にいくつかのジョブを実行した後にのみ、2 番目のタスクを開始する必要があるということです。現在、2 つのスレッド クラスは大まかに次のようになっています。

ただし、実際には、wait() と notify() に関係なく、プログラムは依然としてランダムに実行されます。誰でもこの問題で私を助けることができますか? ありがとう。

0 投票する
2 に答える
20820 参照

multithreading - ビジーウェイトとポーリングの違いは何ですか?

ポーリングに関するウィキペディアの記事から

コンピューター サイエンスにおけるポーリング (ポーリング操作) は、同期アクティビティとして、クライアント プログラムによって外部デバイスの状態をアクティブにサンプリングすることを指します。ポーリングは、ほとんどの場合、入出力 (I/O) に関して使用され、ポーリング I/O またはソフトウェア駆動 I/O とも呼ばれます。

ポーリングは、ビジー待機ポーリング (ビジー待機) と同義で使用されることがあります。この状況では、I/O 操作が必要な場合、コンピューターは I/O デバイスの状態を確認する以外に何もしません。準備ができた時点でデバイスにアクセスします。つまり、コンピュータはデバイスの準備が整うまで待機します。
ポーリングとは、デバイスの準備が整っているかどうかを繰り返しチェックし、準備が整っていない場合、コンピューターが別のタスクに戻る状況も指します。ビジーウェイトほど CPU サイクルを浪費するわけではありませんが、これは通常、ポーリングや割り込み駆動型 I/O に代わる方法ほど効率的ではありません。

では、スレッドが「条件変数」を使用しない場合、それはデータ変更の「ポーリング」または「ビジー待機」と呼ばれますか?

0 投票する
1 に答える
1748 参照

multithreading - while ループのない pthread_cond_wait

私の場合、ループはなく、if 条件があるだけです。したがって、temp == 'x' の場合、threadA はそれ/これを行う必要があります。

  • を扱う場合、ループは必須pthread_cond_waitですか?
  • ループが必要ない場合、コードを書く他の方法は何ですか?
  • これは正しいコードの書き方ですか?
0 投票する
4 に答える
3204 参照

pthreads - 条件変数を保護するにはミューテックスが必要です

条件変数を保護するにはミューテックスが必要だと言われています。

ここでは、値がシグナリングと待機を決定する 通常の共有変数としてpthread_cond_t
宣言された実際の条件変数への参照です。 ?
count

0 投票する
3 に答える
1104 参照

c++ - scoped_lockでロックを解除するための外部呼び出し

次のブログ投稿:

http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html

次のように定義された「プッシュ」メソッドがあります。

私の質問は次のとおりです。

  1. scoped_lock変数に対して明示的な「lock.unlock()」が呼び出されるのはなぜですか?

  2. その目的は何ですか?

  3. 安全に削除して、'notify_one'メソッド呼び出しをscoped_mutexのスコープ内に収めることができますか?