Make the Loader API thread-safe
Since the majority of the code is using ReadAt API already, map this to a `readp` "syscall" which does not mutate any state about the file descriptor therefore making it fairly safe multi-threading wise. This allows to get rid of read-time mutexes in RamCachedFileLoader and therefore fixes #9803
This commit is contained in:
parent
3249d81654
commit
3c3596dbf2
14 changed files with 7 additions and 107 deletions
|
@ -34,13 +34,6 @@ public:
|
|||
s64 FileSize() override;
|
||||
std::string Path() const override;
|
||||
|
||||
void Seek(s64 absolutePos) override;
|
||||
size_t Read(size_t bytes, size_t count, void *data, Flags flags = Flags::NONE) override {
|
||||
return ReadAt(filepos_, bytes, count, data, flags);
|
||||
}
|
||||
size_t Read(size_t bytes, void *data, Flags flags = Flags::NONE) override {
|
||||
return ReadAt(filepos_, bytes, data, flags);
|
||||
}
|
||||
size_t ReadAt(s64 absolutePos, size_t bytes, size_t count, void *data, Flags flags = Flags::NONE) override {
|
||||
return ReadAt(absolutePos, bytes * count, data, flags) / bytes;
|
||||
}
|
||||
|
@ -65,7 +58,6 @@ private:
|
|||
};
|
||||
|
||||
s64 filesize_;
|
||||
s64 filepos_;
|
||||
FileLoader *backend_;
|
||||
int exists_;
|
||||
int isDirectory_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue