ブレークポイントの設定(エラー) – プログラミング – Home

ブレークポイントの設定(エラー)
 
通知
すべてクリア

ブレークポイントの設定(エラー)


ミミィ
 ミミィ
(@ミミィ)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

実行しているとたまに「ブレークポイントの設定」というメッセージとともに
混在モードに突入して処理が停止してしまいます。
コールスタックで調べてみたところ、INIファイル読み込み関数の部分で
不正な値をかえしていることが判明しました。
(GetProfileStringの戻り値がNULL、引数に関する設定ミスは無し。)

そこで、お聞きしたいのが「API関数の実行を失敗する場合があるのかどうか?」

ということです。プログラムの状況は以下のとおり。
//
・読み込みは一つのINIファイルに対して行われる。
・複数のスレッドから同時に読み込みアクセスがおこる可能性あり。
・INIファイルに対する読み込みは1秒間に5回以上はアクセスする。(多いと20回)
・INIファイルに対するアクセスは読み込みのみで、書き換えは行われない。
・プログラム実行後10分~8時間でランダムに発生している。
・メモリ不足はない。
//

今のところは短い時間にたくさんのアクセスを繰り返したから
読み取りに失敗してしまったと予想して、読み込み回数を減らそうと考えています。
似たような事象を体験された、又は聞いたことがある方がいらっしゃいましたら
教えていただけると助かります。
また、不足している情報などございましたら、ご指摘ください。

動作環境:::VC++6.0(SP5.0)、WIN_XP、MFC使用


引用解決済
トピックタグ
ひょっとして
 ひょっとして
(@ひょっとして)
ゲスト
結合: 22年前
投稿: 11
 

> ・複数のスレッドから同時に読み込みアクセスがおこる可能性あり。
> ・INIファイルに対する読み込みは1秒間に5回以上はアクセスする。(多いと20回)

 ご質問の内容とは直接関係なくなってしまうかもしれませんが、処理の始めの方で
一度すべて INIファイルから情報をメモリに取得しておいて、それを参照するのでは
駄目ですかね?

 何となくファイルアクセスに無理がありそうだし、メモリに確保したほうが早そう
な気がして…。無関係な話だったらごめんなさい…。


返信引用
ミミィ
 ミミィ
(@ミミィ)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

ありがとうございます。

>>INIファイルから情報をメモリに取得
>>~
>>無関係な話だったらごめんなさい…。

いえ、そのとおりです。。。
設定情報自体もたいした量ではなく、実行時にメモリに読み込んでおけば
すむものでした・・・・
ただいま変更を掛けております。これで頻度が減ればいいのですが・・・


返信引用
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

(方針はひょっとしてさんの案でよいと思います、情報だけ。。。)

INIファイル関連のAPIは、そのつどファイルアクセスせずに
キャッシュに溜め込んだデータを(あれば)返すように実装されています

つまり、メモリ確保/開放という処理を場合に応じてやっていることになります

で、問題はこれらの関数がスレッドセーフかどうかです

そのような現象が起きるということはスレッドセーフじゃないのかもしれないですね


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました