を使用して 1 つのスレッドでファイルを開く Visual C++ プログラムがありますFILE* fp = fopen(...)
。別のスレッドがファイルを読み取っている間、そのスレッドをイベントオブジェクトでブロックし、それが完了するとブロックされたスレッドに通知し、ファイルを閉じます。fp
はスレッド間で共有されるため、 として宣言していvolatile FILE* fp
ます。ただし、その引数fread()
として volatile を受け入れません。を呼び出すスレッドでFILE*
、ローカル ポインターを使用してみましたが、次のようになりました。FILE* fpLocal = fp;
fread()
Error: a value of type "volatile FILE*" cannot be assigned to an entity of type "FILE*"
当然のことながら、あるスレッドでファイルを開いて別のスレッドで読み込もうとするのは間違いなのではないかと心配していますが、その理由は (まだ) わかりません。
誰かがこれで私を助けることができますか? volatile FILE*
をに代入できないのはなぜFILE*
ですか?