本文整理匯總了C++中DirectoryEntry::getAccess方法的典型用法代碼示例。如果您正苦於以下問題:C++ DirectoryEntry::getAccess方法的具體用法?C++ DirectoryEntry::getAccess怎麽用?C++ DirectoryEntry::getAccess使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類DirectoryEntry
的用法示例。
在下文中一共展示了DirectoryEntry::getAccess方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: queue
/*!
* \brief Enqueue a work descriptor in the readyQueue of the passed thread
* \param thread pointer to the thread to which readyQueue the task must be appended
* \param wd a reference to the work descriptor to be enqueued
* \sa ThreadData, WD and BaseThread
*/
virtual void queue ( BaseThread *thread, WD &wd )
{
ThreadData &data = ( ThreadData & ) *thread->getTeamData()->getScheduleData();
if ( !data._init ) {
data._cacheId = thread->runningOn()->getMemorySpaceId();
data._init = true;
}
TeamData &tdata = (TeamData &) *thread->getTeam()->getScheduleData();
if ( wd.isTied() ) {
unsigned int index = wd.isTiedTo()->runningOn()->getMemorySpaceId();
tdata._readyQueues[index].push_front ( &wd );
return;
}
if ( wd.getNumCopies() > 0 ){
unsigned int numCaches = sys.getCacheMap().getSize();
unsigned int ranks[numCaches];
for (unsigned int i = 0; i < numCaches; i++ ) {
ranks[i] = 0;
}
CopyData * copies = wd.getCopies();
for ( unsigned int i = 0; i < wd.getNumCopies(); i++ ) {
if ( !copies[i].isPrivate() ) {
WorkDescriptor* parent = wd.getParent();
if ( parent != NULL ) {
Directory *dir = parent->getDirectory();
if ( dir != NULL ) {
DirectoryEntry *de = dir->findEntry(copies[i].getAddress());
if ( de != NULL ) {
for ( unsigned int j = 0; j < numCaches; j++ ) {
ranks[j]+=((unsigned int)(de->getAccess( j+1 ) > 0))*copies[i].getSize();
}
}
}
}
}
}
unsigned int winner = 0;
unsigned int maxRank = 0;
for ( unsigned int i = 0; i < numCaches; i++ ) {
if ( ranks[i] > maxRank ) {
winner = i+1;
maxRank = ranks[i];
}
}
tdata._readyQueues[winner].push_front( &wd );
} else {
tdata._readyQueues[0].push_front ( &wd );
}
}