?
@Hmm: Arg viel zu lesen - gibt es dazu zufällig ein Inhaltsverzeichnis, mit dem ich mir die "richtigen" Abschnitte raussuchen kann?
@all: Ich weiß nicht, ob's noch eleganter geht, aber das dürfte für mich funktionieren:
Quelle:
vector<HANDLE> rd_evts;//gefüllt mit den rd-Events der Empfänger
Target* targets;//das Feld gab's schon, also habe ich es mitgenutzt
CEvent write;//Schreib-Event
SetData(BYTE* data)
{
write.ResetEvent();
WaitForMultipleObjects(m_tgCount,&rd_evts[0],TRUE,INFINITE);
memcpy(m_data,data,m_dlen);
for(i=0;i<m_tgCount;++i)
targets[i].m_rcv.SetEvent(); //alle Ziel benachrichtigen
write.SetEvent();
return S_OK;
}
Empfänger:
CEvent m_rd; //ready - wird in rd_evts der Quelle eingetragen
CEvent m_rcv;//Recieve
FillBuffer(BYTE* buffer)
{
HANDLE evts[]={m_rcv,source->write};
WaitForMultipleObjects(2,evts,TRUE,INFINTE);
memcpy(buffer,source->m_data,source->m_dlen);
m_rd.SetEvent();//Rückmeldung an Quelle
return S_OK;
}
Nun stehe ich vor dem nächsten Problem - wie kann ich von außen die ganze Angelegenheit anhalten? (*geht weiter basteln*)