本文整理汇总了C++中Operation::retain方法的典型用法代码示例。如果您正苦于以下问题:C++ Operation::retain方法的具体用法?C++ Operation::retain怎么用?C++ Operation::retain使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Operation
的用法示例。
在下文中一共展示了Operation::retain方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runOperations
void OperationQueue::runOperations()
{
MCLog("start thread");
mailsem_up(mStartSem);
while (true) {
Operation * op = NULL;
bool needsCheckRunning = false;
bool quitting;
AutoreleasePool * pool = new AutoreleasePool();
mailsem_down(mOperationSem);
pthread_mutex_lock(&mLock);
if (mOperations->count() > 0) {
op = (Operation *) mOperations->objectAtIndex(0);
}
quitting = mQuitting;
pthread_mutex_unlock(&mLock);
//MCLog("quitting %i %p", mQuitting, op);
if ((op == NULL) && quitting) {
MCLog("stopping %p", this);
mailsem_up(mStopSem);
retain(); // (2)
#if __APPLE__
performMethodOnDispatchQueue((Object::Method) &OperationQueue::stoppedOnMainThread, NULL, mDispatchQueue, true);
#else
performMethodOnMainThread((Object::Method) &OperationQueue::stoppedOnMainThread, NULL, true);
#endif
pool->release();
break;
}
performOnCallbackThread(op, (Object::Method) &OperationQueue::beforeMain, op, true);
if (!op->isCancelled() || op->shouldRunWhenCancelled()) {
op->main();
}
op->retain()->autorelease();
pthread_mutex_lock(&mLock);
mOperations->removeObjectAtIndex(0);
if (mOperations->count() == 0) {
if (mWaiting) {
mailsem_up(mWaitingFinishedSem);
}
needsCheckRunning = true;
}
pthread_mutex_unlock(&mLock);
if (!op->isCancelled()) {
performOnCallbackThread(op, (Object::Method) &OperationQueue::callbackOnMainThread, op, true);
}
if (needsCheckRunning) {
retain(); // (1)
//MCLog("check running %p", this);
#if __APPLE__
performMethodOnDispatchQueue((Object::Method) &OperationQueue::checkRunningOnMainThread, this, mDispatchQueue);
#else
performMethodOnMainThread((Object::Method) &OperationQueue::checkRunningOnMainThread, this);
#endif
}
pool->release();
}
MCLog("cleanup thread %p", this);
}