/* Performance test to see how many uncontended locks and unlocks can be performed in a given timeframe. */ void tst_QSystemReadWriteLock::uncontendedLocks() { uint read=0; uint write=0; uint count=0; int millisecs=1000; { QTime t; t.start(); while(t.elapsed() <millisecs) { ++count; } } { QSystemReadWriteLock rwLock("Viper", QSystemReadWriteLock::Create); QTime t; t.start(); while(t.elapsed() <millisecs) { rwLock.lockForRead(); rwLock.unlock(); ++read; } } { QSystemReadWriteLock rwLock("Viper", QSystemReadWriteLock::Create); QTime t; t.start(); while(t.elapsed() <millisecs) { rwLock.lockForWrite(); rwLock.unlock(); ++write; } } qDebug("during %d millisecs:", millisecs); qDebug("counted to %u", count); qDebug("%u uncontended read locks/unlocks", read); qDebug("%u uncontended write locks/unlocks", write); }
UpnpWebFileHandle CESContentDirectory_Device_Android::FileOpen(const char *filename,IN enum UpnpOpenFileMode Mode) { int nret = 0; // if(strcasecmp(SPECIAL_DEVICE,filename) == 0) // { // return (UpnpWebFileHandle)m_pSpecialDevice->FileOpen(); // } JNIEnv *env = GetJNIEnv(); jstring jid = env->NewStringUTF(filename); jobject jreturn = env->CallObjectMethod(m_jCallback,methIdGetFileInfo,jid); if(!jreturn) { Trace("File not found %s\n",filename); nret = -1; } else { jstring jrealPath = (jstring)env->GetObjectField(jreturn,MetaDataInfo::jrealPath); if(jrealPath) { icstring realpath = env->GetStringUTFChars(jrealPath,NULL); int fd = open(realpath,O_RDONLY); if(fd == -1) { Trace("fail to open %s\n",realpath); nret = -1; } else { IUpnpUtil::CQuickRWLock rwLock(&m_lock,FALSE); m_fileHandleList.push_back(fd); nret = fd; } env->ReleaseStringUTFChars(jrealPath,realpath); } else { nret = -1; } } if(jid) env->DeleteLocalRef(jid); if(jreturn) env->DeleteLocalRef(jreturn); DetachJNIThread(); Trace("File opened %d\n",nret); return (UpnpWebFileHandle)nret ; }
Ticket MessageManager::StartConversation(int socketFD) { Lock lock(&m_endpointsMutex); //If the endpoint doesn't exist, then it was closed. Just exit with failure if(m_endpoints.count(socketFD) == 0) { return Ticket(); } Lock rwLock(m_endpoints[socketFD].second, READ_LOCK); if(m_endpoints[socketFD].first == NULL) { return Ticket(); } return Ticket(m_endpoints[socketFD].first->StartConversation(), 0, false, false, socketFD, m_endpoints[socketFD].second); }