我有这样的代码:
uint16_t getNextAvailableTransactionID() throw (RMAPEngineException) {
transactionIDMutex.lock();
if (availableTransactionIDList.size() != 0) {
unsigned int tid = *(availableTransactionIDList.begin());
availableTransactionIDList.pop_front();
transactionIDMutex.unlock();
return tid;
} else {
transactionIDMutex.unlock();
throw RMAPEngineException(RMAPEngineException::TooManyConcurrentTransactions);
}
}
,availableTransactionIDList是C ++的std :: list
因为我将此功能用作从硬件读取数据的一部分。检查后,来自availableTransactionIDList的开销(我使用了clock_gettime()并在函数中设置时间戳来检查)。
只是想知道,有没有解决std :: list的开销问题?