マルチスレッドプログラムでこのコードを使用します。
class A{
public:
FILE *File;
bool ThFunc(){
if (CreateDataFile())
std::cout << "File was created\n";
else{
std::cout << "Can't create file\n";
return false;
}
//work with file
if (CloseDataFile()){
std::cout << "File was closed\n";
return true;
}
else{
std::cout << "Can't close file\n";
return false;
};
};
bool CreateDataFile(){
File = fopen ("binary_file.bin", "wb");
if (File!=NULL)
return true;
else
return false;
};
bool CloseDataFile(){
int t=fclose(File);
if (t!=0)
return false;
else{
//insert the file name in another thread
return true;
}
}
};
別のスレッド (~ 10 ファイルごと) で、「ファイルは別のプログラム (my.exe) によって使用されています」というエラーが発生することがありますが、コンソールでは「ファイルが閉じられました」と表示されます。何が間違っている可能性がありますか?Mutex は、ThFunc() を使用する前にロックされ、使用後にロック解除されます。