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.