トップ回答者
マルチコアCPUで走るアプリは自動的にマルチスレッド?

質問
回答
-
とりあえず、エラーの理由を確認してはどうですか?
Openを使っているのであれば、3つめの引数にCFileExceptionのオブジェクトを渡して、OpenがFALSEを返したときに渡したCFileExceptionのオブジェクトを確認してください。
ほかのタスクが、どれだけCPUを確保していてもファイルが開かないとは考えにくいですが。
排他オープンをしていて、複数スレッドから開閉したりしていないですよね?
(この場合いずれかのスレッドが開けている間は、ほかのスレッドでは開きません。マルチスレッドにしていないと言うことですが、2プロセス起動とかすると当然発生します。)
>マルチコアCPUで走るアプリは自動的にマルチスレッド?
マルチコアと、マルチスレッドは関係ありません。
シングルコアで、マルチスレッドなアプリケーションも動作しますし、マルチコアでシングルスレッドのアプリケーションも動作します。
>開発したアプリでもマルチスレッドの範疇に入り、ファイル入出力なども相応の考慮がひつようなのでしょうか?
使用しているライブラリが、勝手にスレッド起動する場合もありますが(MFCではCFileDialogなど)、通常は自身で管理していないものまで考慮する必要はありません。
CFile f;
CFileException e;
if (!f.Open(ほげほげ,ほげほげ, &e))
e.ReportError();
とかやると、e.ReportError();で、エラー内容のメッセージが出ます。- 回答としてマーク PCGO 2009年8月19日 9:28
すべての返信
-
とりあえず、エラーの理由を確認してはどうですか?
Openを使っているのであれば、3つめの引数にCFileExceptionのオブジェクトを渡して、OpenがFALSEを返したときに渡したCFileExceptionのオブジェクトを確認してください。
ほかのタスクが、どれだけCPUを確保していてもファイルが開かないとは考えにくいですが。
排他オープンをしていて、複数スレッドから開閉したりしていないですよね?
(この場合いずれかのスレッドが開けている間は、ほかのスレッドでは開きません。マルチスレッドにしていないと言うことですが、2プロセス起動とかすると当然発生します。)
>マルチコアCPUで走るアプリは自動的にマルチスレッド?
マルチコアと、マルチスレッドは関係ありません。
シングルコアで、マルチスレッドなアプリケーションも動作しますし、マルチコアでシングルスレッドのアプリケーションも動作します。
>開発したアプリでもマルチスレッドの範疇に入り、ファイル入出力なども相応の考慮がひつようなのでしょうか?
使用しているライブラリが、勝手にスレッド起動する場合もありますが(MFCではCFileDialogなど)、通常は自身で管理していないものまで考慮する必要はありません。
CFile f;
CFileException e;
if (!f.Open(ほげほげ,ほげほげ, &e))
e.ReportError();
とかやると、e.ReportError();で、エラー内容のメッセージが出ます。- 回答としてマーク PCGO 2009年8月19日 9:28
-
らーめん食べたいなぁ さん
早速のご教示ありがとうございました。エラー内容は「共有違反」とわかり、当該ファイルのフォルダーを「共有しない」と
設定したところ、直面していたトラブルは霧が晴れるように皆無になりました。セキュリテイソフト、家庭内LANなどが定期的に
アクセスするのとタイミングが一致するとファイルのOpenエラーが発生したと考えられます。
テストのためOpen/Closeの無限繰り返しコードを走らせると、CPUメーターはCPU1もCPU2も両方跳ね上がります。
どこかで誰かが私の知らないうちに私の書いたコードを2つのCPUコアに勝手に分配して結果を出している、うまく動いている
うちはありがたいが、初心者にはマルチコアは疑心暗鬼の面もあります。今後もう少し勉強してみるつもりです。
おかげさまで敏速に当面の問題を解決でき大変感謝しております。「お礼にらーめんを差し上げたい」気持ちです。
PCGO