Verbesserung meiner threadfunktion
-
Habe einen Workflow, welcher den Zeitlichen ablauf von Event behinhaltet. Die Events sind als objekte in einer std::liste gespeichert, wobei jedes Event bzw. Element ein Variable "m_dDuration" auf das vorder hat!
Mein thread nimmt immer das erste Element/Event der liste, zählt dessen zeit herunter, gibt den inhalt weiter) und löscht das element! und macht mit dem nächsten weiter
bspw:
<---A<---- B <---- C<---- D
A,B,C,D sind events (elemente der liste, der Abstand "<---" Event m_dDuration)
void MainThread::Run(){ //Jede Timeline durchlaufen... long lDiff= timeGetTime(); Sleep(50); m_Mutex.Acquire(); //Externer Workflowzugriff sperren //Workflow verarbeiten for(size_t i=0; i< WORKER_THREADS; ++i){ //Wenn Ressource (i) keine Allokationen enthält, dann überspringen if(m_pData->m_pWorkflow[i].empty()) continue; //Erste Allokation jeder Zeitlevectore begutachten CTimeEvent &oAlloc = m_pData->m_pWorkflow[i].front(); //Wenn TimeEvent Gegenwärtig ist, dann elimieren if(oAlloc.m_dDuration< 50){ //TimeEvent enthält Primärer Allocation if((oAlloc.m_iFlags & 1) && oAlloc.m_vRelationship[0].second){ //------------------------------------------------------ m_Worker[i]->Resume(oAlloc.m_vRelationship[0].second); // Workerthread aktivieren! TRACE("Start Alloc"); //------------------------------------------------------ } //TimeEvent löschen m_pData->m_pWorkflow[i].pop_front(); } else //Zeitlicher Abstand des nächsten TimeEvent runterzählen! oAlloc.m_dDuration-=(timeGetTime()-lDiff); } //Laufzeit des Mainthreads m_dStart+=((double)(timeGetTime()-lDiff))/1000; m_Mutex.Release(); //Workflow entsperren }Die funktion funktioniert wunderbar, allerding nicht gerade genau.. wie könnte ich den aufruf der event genauer machen?