// A scoped File object that calls Close without flushing. using ScopedFlock = std::unique_ptr<LockedFile, LockedFileCloseNoFlush>;
class LockedFile : public unix_file::FdFile { public: // Attempts to acquire an exclusive file lock (see flock(2)) on the file // at filename, and blocks until it can do so. // // It is an error if its inode changed (usually due to a new file being // created at the same path) between attempts to lock it. In blocking mode, // locking will be retried if the file changed. In non-blocking mode, false // is returned and no attempt is made to re-acquire the lock. // // The file is opened with the provided flags. static ScopedFlock Open(constchar* filename, int flags, bool block,
std::string* error_msg);
// Attempt to acquire an exclusive file lock (see flock(2)) on 'file'. // Returns true if the lock could be acquired or false if an error // occured. static ScopedFlock DupOf(constint fd, const std::string& path, constbool read_only_mode, std::string* error_message);
// Release a lock held on this file, if any. void ReleaseLock();
private: // Constructors should not be invoked directly, use one of the factory // methods instead. explicit LockedFile(FdFile&& other) : FdFile(std::move(other)) {
}
// Constructors should not be invoked directly, use one of the factory // methods instead.
LockedFile(int fd, const std::string& path, bool check_usage, bool read_only_mode)
: FdFile(fd, path, check_usage, read_only_mode) {
}
};
class LockedFileCloseNoFlush { public: voidoperator()(LockedFile* ptr) {
ptr->ReleaseLock();
UNUSED(ptr->Close());
delete ptr;
}
};
} // namespace art
#endif// ART_LIBARTBASE_BASE_SCOPED_FLOCK_H_
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.