本文整理汇总了C++中ClassList::destroy方法的典型用法代码示例。如果您正苦于以下问题:C++ ClassList::destroy方法的具体用法?C++ ClassList::destroy怎么用?C++ ClassList::destroy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ClassList
的用法示例。
在下文中一共展示了ClassList::destroy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testWorkflow
void testWorkflow( XmlCall& call ) {
// parameters
String threadPoolName = call.getParam( "threadPoolName" );
int nTasks = call.getIntParam( "nTasks" );
int taskTimeMs = call.getIntParam( "taskTimeMs" );
int runTimeSec = call.getIntParam( "runTimeSec" );
int suspendTimeSec = call.getIntParam( "suspendTimeSec" );
int resumeTimeSec = call.getIntParam( "resumeTimeSec" );
// create task list
ClassList<ThreadPoolTask> tasks;
for( int k = 0; k < nTasks; k++ ) {
ThreadPoolTest_Task *task = new ThreadPoolTest_Task( String( "T" ) + k , taskTimeMs );
tasks.add( task );
}
// create and configure thread pool
logger.logInfo( "Create thread pool..." );
ThreadService *ts = ThreadService::getService();
ts -> createThreadPool( threadPoolName , call.getXml().getChildNode( "threadpoolconfiguration" ) , tasks );
// workflow
logger.logInfo( "Start thread pool..." );
ts -> startThreadPool( threadPoolName );
ts -> threadSleepMs( runTimeSec * 1000 );
logger.logInfo( "Suspend thread pool..." );
ts -> suspendThreadPool( threadPoolName );
ts -> threadSleepMs( suspendTimeSec * 1000 );
logger.logInfo( "Resume thread pool..." );
ts -> resumeThreadPool( threadPoolName );
ts -> threadSleepMs( resumeTimeSec * 1000 );
logger.logInfo( "Stop thread pool..." );
ts -> stopThreadPool( threadPoolName );
// drop tasks
tasks.destroy();
logger.logInfo( "Finished." );
}
示例2: extract_fiberitems
bool NerveTool::extract_fiberitems( FILE *sout , StringList& fibersinfo , String type , String& value ) {
// parse value: x,y -> x,y -> x,y ...
ClassList<StringList> chain;
value.trim();
while( !value.isEmpty() ) {
String part;
int idx = value.find( "->" );
if( idx < 0 ) {
if( chain.count() == 0 )
return( false );
part = value;
value.clear();
}
else {
part = value.getMid( 0 , idx );
value.remove( 0 , idx + 2 );
value.trim();
if( value.isEmpty() )
return( false );
}
// parse part
StringList *z = new StringList;
chain.add( z );
if( !extract_codes( part , z ) ) {
fprintf( sout , "wrong part=%s\n" , ( const char * )part );
return( false );
}
// prohibit many-to-many
if( z -> count() > 1 && chain.count() > 1 ) {
StringList& zp = chain.getRef( chain.count() - 2 );
if( zp.count() > 1 )
return( false );
}
}
// chain of more than one
if( chain.count() < 2 )
return( false );
// split chain
int startChain = 0;
int startChainCount = 0;
for( int k = 0; k < chain.count(); k++ ) {
StringList& z = chain.getRef( k );
int zn = z.count();
// starter
if( k == 0 ) {
startChainCount = zn;
continue;
}
// many to one - split
if( startChainCount > 1 ) {
if( zn != 1 )
return( false );
addManyToOne( fibersinfo , type , chain.getRef( startChainCount ) , z.get( 0 ) );
startChain = k;
startChainCount = zn;
continue;
}
// allow x -> y -> z as is
if( zn == 1 ) {
if( k == chain.count() - 1 ) {
addSingleChain( fibersinfo , type , chain , startChain , k );
break;
}
continue;
}
// x -> y -> x,y - split to x -> y and y -> x,y
if( ( k - 1 ) > startChain ) {
addSingleChain( fibersinfo , type , chain , startChain , k - 1 );
startChain = k - 1;
startChainCount = 1;
}
addOneToMany( fibersinfo , type , chain.getRef( startChain ).get( 0 ) , z );
startChain = k;
startChainCount = zn;
}
chain.destroy();
return( true );
}