スリープありのスレッドをブロックするvsスリープなしでブロックする

フロガット

C ++スレッドとPOSIXスレッドを使用してマルチスレッドアプリケーションを作成しました。ここで、ブールフラグが設定される(trueになる)までスレッド(メインスレッド)をブロックする必要があります。

私はこれを成し遂げるために2つの方法を見つけました。

  • 睡眠なしでループ回転します

    while(!flag);
    
  • 睡眠を伴うループ回転します

    while(!flag){
         sleep(some_int);
    }
    

私が最初の方法に従う必要がある場合、なぜ一部の人々は2番目の方法に従ってコードを書くのですか?2番目の方法を使用する必要がある場合、なぜ現在のスレッドをスリープ状態にする必要があるのでしょうか。そして、この方法の欠点は何ですか?

アラン・ストークス

最初のオプション(「ビジーウェイト」)は、待機期間中コア全体を浪費し、他の有用な作業が行われたり、エネルギーを浪費したりするのを防ぎます。

2番目のオプションは無駄が少なくなります。待機中のスレッドはCPUをほとんど使用せず、他のスレッドを実行できます。しかし、フラグをチェックするためにスレッドに切り替え続けるのはまだ無駄です。

どちらよりもはるかに優れているのは、条件変数を使用することです。これにより、待機中のスレッドは、続行できるようになるまでリソースを消費せずにブロックできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スクリプトをブロックするスレッドのループ

分類Dev

Electronアプリのパフォーマンス:ipcRenderer.sendSyncでスレッドをブロックする

分類Dev

別のスレッドでスリープしているときに、ソケットの受信がブロックされるのはなぜですか?

分類Dev

セロリでコールバックするが、プロセスをブロックしない方法

分類Dev

可能であればリクエストスコープにBeanを注入することは可能であり、スレッドに対してアクティブでない場合は、プロトタイプを注入しますか?

分類Dev

ENOENT画像ピッカーライブラリを使用し、パスをあらゆる方法で変換するそのようなファイルやディレクトリはありません、Android画像のアップロードの問題

分類Dev

Dartの別のライブラリを介してロードすると、あるライブラリのトップレベルルーチンにアクセスできなくなります

分類Dev

joinがメインスレッドをブロックするのに、ループでブロックしないのはなぜですか?

分類Dev

メッセージブローカーなしで、API統合(WebClientを直接使用)のためのリアクティブアプローチマイクロサービスを使用することにリスクはありますか?

分類Dev

Node.JSサーバーアプリでIPアドレスを正しくブロックする方法は?

分類Dev

2Dグリッドデータのブロックあたりのスレッド数とブロック数を推定するCUDA

分類Dev

スレッドがミューテックスをロックし、ロックを解除しない場合、残りのスレッドをブロックするべきではありませんか?

分類Dev

ブロックアドレスWinDbgを指定してヒープブロックの内容を表示する方法

分類Dev

Googleドライブのカールリクエストが通常、Google Chromeのドラッグアンドドロップアップロードよりもはるかに速いアップロード速度を経験するのはなぜですか?

分類Dev

パブリックタブローダッシュボードをスクレイプする方法は?

分類Dev

ナイーブなスプレッドシートマクロの値をインクリメントするPythonスクリプト

分類Dev

特定のURLでスクリプトをブロックする

分類Dev

すべてのパブリックメソッド、プロパティ、フィールドを公開しながらクラスをラップする

分類Dev

ブーストスレッドをブロックしてウェイクアップする方法は?

分類Dev

ブーストスレッドをブロックしてウェイクアップする方法は?

分類Dev

リアクタースレッドをブロックしないツイストのwhileループの代替

分類Dev

タスクマネージャーがジョブマネージャーへの接続に失敗する[ループバックまたはリンクローカルではないIPv4アドレスが見つかりませんでした。ローカルホストアドレスを使用します。]

分類Dev

Apacheリバースプロキシの背後にあるサブディレクトリでPlayをセットアップする方法

分類Dev

ブラウザでスクロールするための特別なスレッドはありますか?

分類Dev

同じコードブロック内でリストに複数回アクセスする-より良いアプローチはありますか?

分類Dev

JavaScriptでドロップリストのセレクターを使用する

分類Dev

スプラッシュを使用してスクレイプでJavaスクリプトのドロップダウンメニューを選択してウェブサイトをクロールする

分類Dev

プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

分類Dev

このサブスクリプションがメインスレッドをブロックするのはなぜですか?

Related 関連記事

  1. 1

    スクリプトをブロックするスレッドのループ

  2. 2

    Electronアプリのパフォーマンス:ipcRenderer.sendSyncでスレッドをブロックする

  3. 3

    別のスレッドでスリープしているときに、ソケットの受信がブロックされるのはなぜですか?

  4. 4

    セロリでコールバックするが、プロセスをブロックしない方法

  5. 5

    可能であればリクエストスコープにBeanを注入することは可能であり、スレッドに対してアクティブでない場合は、プロトタイプを注入しますか?

  6. 6

    ENOENT画像ピッカーライブラリを使用し、パスをあらゆる方法で変換するそのようなファイルやディレクトリはありません、Android画像のアップロードの問題

  7. 7

    Dartの別のライブラリを介してロードすると、あるライブラリのトップレベルルーチンにアクセスできなくなります

  8. 8

    joinがメインスレッドをブロックするのに、ループでブロックしないのはなぜですか?

  9. 9

    メッセージブローカーなしで、API統合(WebClientを直接使用)のためのリアクティブアプローチマイクロサービスを使用することにリスクはありますか?

  10. 10

    Node.JSサーバーアプリでIPアドレスを正しくブロックする方法は?

  11. 11

    2Dグリッドデータのブロックあたりのスレッド数とブロック数を推定するCUDA

  12. 12

    スレッドがミューテックスをロックし、ロックを解除しない場合、残りのスレッドをブロックするべきではありませんか?

  13. 13

    ブロックアドレスWinDbgを指定してヒープブロックの内容を表示する方法

  14. 14

    Googleドライブのカールリクエストが通常、Google Chromeのドラッグアンドドロップアップロードよりもはるかに速いアップロード速度を経験するのはなぜですか?

  15. 15

    パブリックタブローダッシュボードをスクレイプする方法は?

  16. 16

    ナイーブなスプレッドシートマクロの値をインクリメントするPythonスクリプト

  17. 17

    特定のURLでスクリプトをブロックする

  18. 18

    すべてのパブリックメソッド、プロパティ、フィールドを公開しながらクラスをラップする

  19. 19

    ブーストスレッドをブロックしてウェイクアップする方法は?

  20. 20

    ブーストスレッドをブロックしてウェイクアップする方法は?

  21. 21

    リアクタースレッドをブロックしないツイストのwhileループの代替

  22. 22

    タスクマネージャーがジョブマネージャーへの接続に失敗する[ループバックまたはリンクローカルではないIPv4アドレスが見つかりませんでした。ローカルホストアドレスを使用します。]

  23. 23

    Apacheリバースプロキシの背後にあるサブディレクトリでPlayをセットアップする方法

  24. 24

    ブラウザでスクロールするための特別なスレッドはありますか?

  25. 25

    同じコードブロック内でリストに複数回アクセスする-より良いアプローチはありますか?

  26. 26

    JavaScriptでドロップリストのセレクターを使用する

  27. 27

    スプラッシュを使用してスクレイプでJavaスクリプトのドロップダウンメニューを選択してウェブサイトをクロールする

  28. 28

    プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

  29. 29

    このサブスクリプションがメインスレッドをブロックするのはなぜですか?

ホットタグ

アーカイブ