Casing von CEvent Array zu CyncObject *[] ???



  • Ich will meine CEvents Array an die CMultiLock Klasse übergeben! Wie mach ich das am besten?

    CEvent *pEvents= new CEvent[x];
    
    CMultiLock (pEvents,......);
    

    fehler: d:\Multithreading\multithread\multithread\ThreadLoop.cpp(60): error C2664: 'CMultiLock::CMultiLock(CSyncObject *[],DWORD,BOOL)' : cannot convert parameter 1 from 'CEvent *' to 'CSyncObject *[]'



  • Du kannst kein Array von CEvents übergeben. Es muss ein Array von Zeigern auf CEvent-Objekte sein:

    MSDN Library schrieb:

    ppObjects
    Array of pointers to the synchronization objects to be waited on



  • hmm.. ok danke, wenn ich nun ein Pointerarry mit CEvent Objekten habe:

    (pData->p == **p)

    pData->p= new CEvent*[a];
    
    for( int i=0; i< a; pData->p[i]= new CEvent(), i++);
    

    wie caste ich dann CEvent** zu CSyncObject*[]??



  • Du brauchst ein Array von CSyncObject-Zeigern, da steckst du dann deine CEvent-Zeiger rein.

    pData->p= new CSyncObject*[a];
    


  • ok super danke so gibts schonmal keine fehler:)

    noch ne kleine Verständisfrage:

    Wenn ich bspw:

    CEvent o;
    

    und

    o.SetEvent();
    

    aufrufe

    und ich dann

    CSingleLock sl(&o);
    sl.lock(INFINITE);
    

    dann wwürde der Thread an der stelle (lock) warten solange bis o.ResetEvent(); aufgerufen wird odeR??



  • BorisDieKlinge schrieb:

    dann wwürde der Thread an der stelle (lock) warten solange bis o.ResetEvent(); aufgerufen wird odeR??

    Nein. Lies die Doku von CEvent und von CSingleLock::Lock.


Anmelden zum Antworten