void WorkerSlave::workparalel() { double t1, t2; MPI_Barrier(MPI_COMM_WORLD); /* cekam na spusteni vsech procesu */ t1 = MPI_Wtime(); /* pocatecni cas */ while (running) { counter++; if (!staciklist.empty()) { color = BLACK; // cout << myRank << ": "; work(); } if (counter % MODULO == 0) { counter = 1; if (staciklist.empty()) { color = WHITE; sendRequestForWork(nextProcesor); } handleCommunication(); } } MPI_Barrier(MPI_COMM_WORLD); /* cekam na dokonceni vypoctu */ t2 = MPI_Wtime(); /* koncovy cas */ }
void WorkerMaster::workparalel() { double t1, t2; MPI_Barrier(MPI_COMM_WORLD); /* cekam na spusteni vsech procesu */ t1 = MPI_Wtime(); /* pocatecni cas */ while (running) { tokenCounter++; counter++; if (counter % MODULO == 0) { counter = 1; if (staciklist.empty()) { color = WHITE; sendRequestForWork(nextProcesor); } else { color = BLACK; // cout << myRank << ": "; work(); } handleCommunication(); } if (tokenCounter % TOKEN_MODULO == 0) { tokenCounter = 1; if (color == WHITE) { if (!waitingForToken) { waitingForToken = true; sendToken(color); } } } } //waiting for solutions getBestSolutionFromProcessors(); result->printResult(); delete result; smallMistakeResult->printResult(); delete smallMistakeResult; MPI_Barrier(MPI_COMM_WORLD); /* cekam na dokonceni vypoctu */ t2 = MPI_Wtime(); /* koncovy cas */ printf ("Spotrebovany cas je %f.\n",t2-t1); }
void NsSmartDeviceLink::NsTransportManager::CTCPAdapter::connectionThread(const NsSmartDeviceLink::NsTransportManager::tConnectionHandle ConnectionHandle) { handleCommunication(ConnectionHandle); tDeviceHandle deviceHandle = InvalidDeviceHandle; pthread_mutex_lock(&mConnectionsMutex); tConnectionMap::iterator connectionIterator = mConnections.find(ConnectionHandle); if (mConnections.end() != connectionIterator) { STCPConnection * connection = dynamic_cast<STCPConnection*>(connectionIterator->second); if (0 != connection) { deviceHandle = connection->mDeviceHandle; delete connection; } else { LOG4CPLUS_ERROR(mLogger, "Connection " << ConnectionHandle << " is invalid"); } mConnections.erase(connectionIterator); } else { LOG4CPLUS_ERROR(mLogger, "Connection " << ConnectionHandle << " was not found in connections map"); } for (connectionIterator = mConnections.begin(); connectionIterator != mConnections.end(); ++connectionIterator) { SConnection * connection = connectionIterator->second; if (0 != connection) { if (deviceHandle == connection->mDeviceHandle) { deviceHandle = InvalidDeviceHandle; break; } } } pthread_mutex_unlock(&mConnectionsMutex); if (InvalidDeviceHandle != deviceHandle) { LOG4CPLUS_INFO(mLogger, "No connections left for device " << deviceHandle << ". Deleting device"); pthread_mutex_lock(&mDevicesMutex); tDeviceMap::iterator deviceIterator = mDevices.find(deviceHandle); if (mDevices.end() != deviceIterator) { delete deviceIterator->second; mDevices.erase(deviceIterator); } pthread_mutex_unlock(&mDevicesMutex); updateClientDeviceList(); } }