スレッドが同時に実行される場合、スレッドがリソースを競合してデータの曖昧さが生じるのを防ぐために、重要なリソースへの安全なアクセスを確保する必要があります。 スレッド同期: 条件変数 条件変数を使用する理由は何ですか? クリティカルリソースのタイミング制御性については、条件が満たされると、シグナルと同様に、クリティカルリソースの操作を待機している他のスレッドに通知されます。 シナリオ: T-DAY展示会の行列/生産者-消費者モデル 条件変数とは何ですか? これは同期メカニズムです。1つのスレッドを使用してこの変数を変更し、他のスレッドが実行を継続するための条件を満たし、他のスレッドは条件が変更されたことを示す信号を受信します。 条件変数操作? 初期化と破棄 pthread_cond_wait 条件が満たされない場合、ロックは解除され、待機はブロックされます。この関数はアトミック操作です。1. スレッドを条件待機キューに入れる2. ロックを解除する 条件が満たされると、スレッドが起動され、ロックされます。 pthread_cond_signal 1対1ウェイクアップ 待機キュー内のスレッドを起動する pthread_cond_broadcast ブロードキャストウェイクアップ 待機キュー内のすべてのスレッドを起動する 待機とロック解除にアトミック操作が必要なのはなぜですか?/条件変数でミューテックスが使用されるのはなぜですか? pthread_cond_wait のロックは条件変数を保護し、シグナルの見逃しを防ぐためのものであるため、ロック解除の待機がアトミック操作ではない場合、たとえば、スレッド A が最初にロック解除され、CPU タイム スライスがスレッド B に切り替わり、スレッド B がロックして条件変数シグナルを送信し、次にスレッド A に切り替わります。スレッド A は待機時間になる前にシグナルを見逃し、永久にブロックされる可能性があります。したがって、待機とロック解除はアトミック操作である必要があります。 重要なリソースが存在するかどうかを判断するために while ループが必要なのはなぜですか? 1 対多の状況では、プロデューサーがシグナルを送信し、待機中のスレッドが起動されてロックされますが、ロックできるのは 1 つのスレッドのみで、他のスレッドはロックを待機してブロックされます。このスレッドが重要なリソースを使い果たした場合、他のスレッドが判断を下さずに前進し続けるのは不合理です。 シグナルは最初にロック解除する必要がありますか、それとも後でロック解除する必要がありますか? 最初にロックが解除され、ブロックされておらず待機中のスレッドによってロックが取得され、その後重要なリソースが使用される場合、ロック解除後の信号は無意味になり、誤ったウェイクアップになります。 まず、singal が起動し、起動したスレッドがロックを競い合うようにします。Linux では、2 つのキューがあります。1 つは cond_wait で、もう 1 つは mutex_lock です。singal は cond_wait のスレッドを mutex_lock に転送するだけで、ユーザー空間には戻らないため、効率が向上します。 スレッドの相互排他: ミューテックスロック なぜミューテックスを使用するのですか? 重要なリソースにのみ同時にアクセスし、重要なリソースが変更されないように保護します。 シナリオ: ダフ屋がチケットを奪う ミューテックスとは何ですか? これは 0/1 カウンターです。1 は操作に使用できるリソースがあることを意味し、0 は操作に使用できるリソースがないことを意味します。 ミューテックスロック操作? 初期化と破棄 ロック---カウントが1の場合は0に設定して必要な操作を実行します。カウントが0の場合はブロックしてカウントが1になるまで待機します。 ロック解除 --- カウントを1に設定する 以上が今回ご紹介した関連知識の全てとなります。123WORDPRESS.COMをご活用いただき、誠にありがとうございます。 |
まずは例を見てみましょうコードをコピーコードは次のとおりです。 <!DOCTYPE html ...
1. jsonオブジェクトをjson文字列に変換し、文字列が「{}」であるかどうかを判断します。 v...
1. Fcitx入力フレームワークをインストールする関連する依存ライブラリとフレームワークは自動的に...
目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...
テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...
システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...
1.Tomcatの最適化構成(1)Tomcatのcatalina.batを変更するJavaをサーバー...
図に示すように: テーブルデータこのようなツリーの場合、「Gao Yinrui」の下のすべてのノード...
背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...
目次ERR 1067による殺人事件2番目の問題の原因はsql_modeです3. sql_modeを設...
今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。ページからコンポーネントにデー...
jquery-multiselect (ドロップダウン ボックスをチェックボックス付きの複数選択コン...
tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...
目次1 コンテナクラウドとは何ですか? 2 Dockerの紹介3 dockerを使ってMySQLをイ...
序文PIPE、パイプラインと翻訳されます。 Angular パイプは、HTML コンポーネントで宣言...