12#ifndef ROOT_TFilePrefetch 
   13#define ROOT_TFilePrefetch 
   22#include <condition_variable> 
   25#ifdef R__LESS_INCLUDES 
#define ClassDefOverride(name, id)
 
This class represents the encapsulation of a block request.
 
The prefetching mechanism uses two classes (TFilePrefetch and TFPBlock) to prefetch in advance a bloc...
 
std::condition_variable & GetCondNewBlock()
 
Bool_t BinarySearchReadList(TFPBlock *, Long64_t, Int_t, Int_t *)
Search for a requested element in a block and return the index.
 
void ReadBlock(Long64_t *, Int_t *, Int_t)
Create a TFPBlock object or recycle one and add it to the prefetchBlocks list.
 
static TThread::VoidRtnFunc_t ThreadProc(void *)
Execution loop of the consumer thread.
 
Int_t SumHex(const char *)
Sum up individual hex values to obtain a decimal value.
 
TFilePrefetch(TFile *)
Constructor.
 
TSemaphore * fSemChangeFile
semaphore used when changing a file in TChain
 
void ReadListOfBlocks()
Get blocks specified in prefetchBlocks.
 
TFPBlock * CreateBlockObj(Long64_t *, Int_t *, Int_t)
Create a new block or recycle an old one.
 
TThread * fConsumer
consumer thread
 
std::condition_variable fNewBlockAdded
signal the addition of a new pending block
 
void AddReadBlock(TFPBlock *)
Safe method to add a block to the readList.
 
Bool_t CheckBlockInCache(char *&, TFPBlock *)
Test if the block is in cache.
 
Long64_t GetWaitTime()
Return the time spent wating for buffer to be read in microseconds.
 
Bool_t fThreadJoined
mark if async thread was joined
 
Bool_t SetCache(const char *)
Set the path of the cache directory.
 
TList * fReadBlocks
list of blocks read
 
Int_t ThreadStart()
Used to start the consumer thread.
 
std::atomic< Bool_t > fPrefetchFinished
true if prefetching is over
 
void ReadAsync(TFPBlock *, Bool_t &)
Read one block and insert it in prefetchBuffers list.
 
TFPBlock * GetPendingBlock()
Safe method to remove a block from the pendingList.
 
void AddPendingBlock(TFPBlock *)
Safe method to add a block to the pendingList.
 
Bool_t ReadBuffer(char *, Long64_t, Int_t)
Return a prefetched element.
 
TString fPathCache
path to the cache directory
 
std::mutex fMutexReadList
mutex for the list of read blocks
 
TStopwatch fWaitTime
time waiting to prefetch a buffer (in usec)
 
std::mutex fMutexPendingList
mutex for the pending list
 
std::condition_variable fReadBlockAdded
signal the addition of a new red block
 
void WaitFinishPrefetch()
Killing the async prefetching thread.
 
TThread * GetThread() const
Return reference to the consumer thread.
 
TFile * fFile
reference to the file
 
TList * fPendingBlocks
list of pending blocks to be read
 
void SetFile(TFile *file, TFile::ECacheAction action=TFile::kDisconnect)
Change the file.
 
char * GetBlockFromCache(const char *, Int_t)
Return a buffer from cache.
 
void SaveBlockInCache(TFPBlock *)
Save the block content in cache.
 
~TFilePrefetch() override
Destructor.
 
Bool_t IsPrefetchFinished() const
 
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
ECacheAction
TTreeCache flushing semantics.
 
Mother of all ROOT objects.
 
<div class="legacybox"><h2>Legacy Code</h2> TThread is a legacy interface: there will be no bug fixes...
 
void *(* VoidRtnFunc_t)(void *)