WindowsのVisualC++です。
同じひとつのプログラムの中で、ある関数があって、これを裏でやりたいのです。たとえば、
void readFiles()
{
for( i=0; i < 100000; i++ )
{
file.readline(i);
処理;
}
}
みたいな感じのサブルーチンを作って、これをそのまま実行すると、10秒くらいかかったとします。
すると、その間、キー入力などPreTranslateMessageに関することとか一切受け付けなくなりますよね。
このreadFilesという関数が終了するまで、ほかの仕事は一切できなくなってしまうと思うのですが、
これを裏ジョブにして、この関数を実行中でもキー入力を受け付けて他の仕事をするようにしたいのです。
そして、他の仕事がなくなってアイドル状態になったら、またこの関数の続きをするようにしたいのですが、どうしたらいいのでしょうか。
No.2
- 回答日時:
既に回答あるように…スレッドを使うのが普通…かと。
で、スレッド使う場合は同期処理について考慮しておかないといろいろ不都合が出たりするのでご注意を。
ファイル読み込みループが回っている間に、GUIを閉じようとした場合にどうなるか…とか。
読み込んだ内容によってGUIなどに反映させる場合にどうするか…とか。
アイドル状態…についてはちょっと手間が必要かも知れません。
スレッドで動作していると割り当てられたCPU時間使って処理しますが、そこだけだとアイドル状態の判定とか難しいでしょう。
# また、スレッドだからとそのまま突っ走る処理だと…CPU使用率も上がっていきます。
No.1ベストアンサー
- 回答日時:
スレッドを分けることで実現できます。
_beginthreadについて調べてみてください。
MFCを使っているなら、AfxBeginThreadの方がいいでしょう。
_beginthread、_beginthreadex
http://msdn.microsoft.com/ja-jp/library/kdzttdcb …
AfxBeginThread
http://msdn.microsoft.com/ja-jp/library/s3w9x78e …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで行削除をすると… 1 2023/07/26 11:57
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 malloc 関数を使って教えてください。 入出力例1 3 2022/07/21 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイクロソフトedge で5チャン...
-
スレッドの監視方法
-
メモリアクセスの競合について
-
C言語で一定時間待機後、再実行
-
pthread_attr_tへの値の代入に...
-
WaitForSingleObjectの使い方に...
-
別スレッドのデータを受信できない
-
アラート可能な待機状態とは
-
マルチスレッドプログラミング...
-
DirectX 11のConsntanBuffer
-
VB2005 シリアル通信のClose処理
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
なんかC言語でプログラム書いて...
-
VBSの処理中一旦処理を止めて再...
-
プログラミング ソースコード
-
DoEvents関数って何?
-
MACで動く実行ファイルをWindow...
-
Webプログラムってネイティブア...
-
COMBOBOXで日付入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
スレッドにて同一メモリの書き...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの安全な終了のさせ方
-
CWnd::OnTimerのスレッドの取得
-
MFC通信プログラムマルチスレッ...
-
Linuxでスレッド優先度って変え...
-
.netアプリへのSendMessageでフ...
-
VB2005 シリアル通信のClose処理
-
別スレッドからメインダイアロ...
-
マルチスレッドについて
-
スレッドの終了はどうやるんで...
-
マルチスレッドプログラミング...
-
別スレッドのデータを受信できない
-
特定のスレッドの破棄
-
msec単位のWait Timerが作れない!
-
C# スレッド終了の監視について
おすすめ情報