現在visual studio 2010 を使ってC++による開発を行っています。
使用しているライブラリのソースコードを読んでいたら下記のような行を見つけたのですが、
どういった内容なのか検討が付かず、困っています。
↓部分的で申し訳ないのですが、下記のような関数が使用されていました。
"boost::thread::yield ();"の使用例とかが解れば何がしたいのか解るのではと思っています。
---------------------------------------------------------------------------------
CloudViewer_impl (const std::string& window_name) :
window_name_ (window_name), has_cloud_ (false), quit_ (false)
{
viewer_thread_ = boost::thread (boost::ref (*this));
while (!viewer_)
{
boost::thread::yield ();
}
}
---------------------------------------------------------------------------------
参考になるかと思い、std::this_threadのyield関数を調べると下記のように説明されていました。
[yield 関数]
現在のスレッドが通常実行を継続がオペレーティング システムに他のスレッドを実行するように通知します。
boost::thread配下の関数ということで、threadの操作をするモノだということは解るのですが、
これまで、あまりthreadを触って来なかったこともあり、見当がつきません。
不躾な質問で申し訳ありませんが、簡単なサンプルでyieldの使い方、使い処など教えて頂ければ有難いです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
スレッドには大きく3つの状態があります。
- waiting : 待機中
- ready : 動けるんだけどCPUが空いてないので待機中
- running : 実行中 (最大でもCPUの数だけ)
で、yield() は 実行中のスレッド(this_thread)がCPUを明け渡し、
ready なスレッドに実行権を与えます。
これによって忙しいスレッドばかりがCPUを占有するのを回避するです。
yieldとは"譲る" って意味ね。
# yield()したとき、readyなスレッドがなかったときはそのままrunningを維持します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- インターネットビジネス Google によりアカウントは閉鎖されました 復活させるにはどうすれば? 基本的に無理ですか? 1 2023/08/18 17:04
- その他(パソコン・スマホ・電化製品) Windows11の記憶域不足 4 2022/09/05 17:58
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Excel(エクセル) Excelで行削除をすると… 1 2023/07/26 11:57
- iPhone(アイフォーン) iPhoneのデータ処理の仕組みに詳しい方に質問です。下の知恵袋とAppleコミュニティで、「ボイス 2 2022/07/16 00:04
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++スレッドの正しい終了のさ...
-
マルチスレッド?
-
C# スレッド終了の監視について
-
スレッドの監視方法について
-
WaitForSingleObjectの使い方に...
-
マルチスレッドプログラミング...
-
スレッドの終了はどうやるんで...
-
スレッドの安全な終了のさせ方
-
VC++ Workerスレッドを強制終了...
-
Linuxでスレッド優先度って変え...
-
VB2005 シリアル通信のClose処理
-
.netアプリへのSendMessageでフ...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
Windows10でDOSゲーム
-
explorer.exeが異様にメモリを食う
-
自分自身を更新するプログラム
-
TCP/IP通信時のサーバーからの受信
-
C言語で、メモリを解放しないで...
-
他のEXEが起動しているかの確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
スレッドの安全な終了のさせ方
-
スレッドにて同一メモリの書き...
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの終了はどうやるんで...
-
VB2005 シリアル通信のClose処理
-
マルチスレッドプログラミング...
-
.netアプリへのSendMessageでフ...
-
マルチスレッドについて
-
Linuxでスレッド優先度って変え...
-
Win32APIでのスレッド処理
-
pthread_cond_wait 取りこぼし?
-
LinuxでDoEvents()同等機能
-
C++ GUIのメッセージループ。
-
excelvbaでCreateThreadの動作
-
マルチスレッドの実行順序の制御
-
同一スレッドで、ロックをかけ...
おすすめ情報