gpt4 book ai didi

c++ - 多线程ifstream/ofstream

转载 作者:行者123 更新时间:2023-11-30 04:14:59 30 4
gpt4 key购买 nike

我有一个“资源模块”类来管理我的应用程序的所有资源,它主要从一个包含所有内容的文件“RESOURCES.DAT”中读取。

从文件中请求新数据的所有对象都通过 ResourceModule,因此我可以管理内存并避免重复资源。

void SomeFunction()
{
Image* newImage = new Image();
newImage->Load("imageName");
}

void Image::Load(string imageName)
{
//Pointer to Image Data
_myImage = ResourceModule::GetResource(imageName);
}

总是只有一个 ResourceModule。我想让它成为多线程安全的,所以当 GetResource(string resourceName) 被调用时,它不会出错。

如果我这样做:

Image* ResourceModule::GetResource(string imageName)
{
ifstream fileReader;
fileReader.open("RESOURCES.DAT", ios::binary);
if(fileReader.is_open())
{
//Do the reading, return the pointer
}
}

这个多线程安全吗?当我这样声明多个 ifstreams/ofstreams 并从同一个文件读取时,它们是否会相互冲突?

最佳答案

没有

它将在只读状态下工作,ifstream 的每个实例都会读取。但这不是问题。每个 ifstream 在文件中都有自己的位置,并且并行进行。

你什么都不用做

关于c++ - 多线程ifstream/ofstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18601911/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com