

thread1()
{
while( 1 )
{
procA(); //ある程度時間のかかる処理
countA++;
}
}
thread2()
{
while( 1 )
{
if ( countA>=countB )
{
procB();
countB++;
}
nanosleep( minimum ); //*1
}
}
thread1のprocAの終了にあわせて、thread2でprocBを処理しています。
*1のsleepを入れない場合、thread2がthread1の待ちの間、1つのCPUを100%使ってしまいます。
procA終了後、procBの処理は、なるべくリアルタイムに近づけたいのですが、
sleepを入れず、1つのCPUを100%使ってProcAの処理を監視した場合とどちらが効率がいいのでしょうか?
2CPUと4CPUでも話は違ってくるのでしょうか。。
procAの終了後にthread2にsignalを送る方法は、今回考えていません。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
そういう時のためにSignalやらMutexやらがあるので、それを使わないというのは、どちらも非効率です。
あえていえば、この場合sleepしている間は当然pocA()の終了を検知できないため、最悪sleepしている時間だけループを抜けるのは遅くなります。
ただし、sleepしない場合busyループとなるので、ループ処理にCPUをとられて、そもそもprocA()の処理にかかる時間が長くなってしまいます。
マルチCPUの場合、procA()に対する負荷は減りますが、メモリバリア(この場合、procAを処理するCPUとprocBを処理するCPUでフラグcountA,countBの値の同期をとること)処理が入るため、結局sleepしたほうが早くなってしまう可能性もあります。
実際にどうなるかはやってみなければ分かりませんが、どちらにせよ非効率なのには変わりないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- 画像編集・動画編集・音楽編集 PowerDirector21 動画出力時のCPU稼働率が急に下がってしまう原因を教えてください 2 2023/03/30 20:54
- CPU・メモリ・マザーボード パソコンでCPUとメモリー、優先は? 11 2023/01/11 17:19
- CPU・メモリ・マザーボード DELL Vostro 3268に付けられるCPUを教えてください。以下にspecを載せてます。 4 2022/10/24 11:19
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(コンピューター・テクノロジー) クロック周波数が4GHzのCPUは,4クロック1命令処理できると仮定した場合,1秒間に何回の処理が可 2 2023/01/11 18:59
- iPhone(アイフォーン) スマホの節電モードについて cpu高速処理コアと効率コア節電モードオンにすると効率コアだけ使われるん 1 2023/08/05 22:51
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET DataGridViewでIsNewRo...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
銀行の窓口処理の件で知ってる...
-
VBAでCOPYを繰り返すと、処理が...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
vba 空のデータをSplitする時の...
-
EXCEL2003 VBAで2つのDBに接続...
-
ハードウェア処理とソフトウェ...
-
内部処理形式ってなんですか
-
Do~Loopした回数をカウントしたい
-
FFTの結果ついて
-
2重のDo~Loopは?
-
Excel VBAにて2つの処理を同時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
お家デートをしててハグを長い...
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
VBAでCOPYを繰り返すと、処理が...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
リョウ・・・量?料?
-
vba 空のデータをSplitする時の...
-
findは動くがfindnextがマクロ...
おすすめ情報