Unser Professor hat uns diesen Code in der Klasse:Was ist der Zweck von Pthread und der Funktion select()?
st = select(max+1, &rs, NULL, NULL, &timeinterval);
if(st){
for(int i=0; i<workers; i++)
{
if(FD_ISSET(channels[i]->read_fd(), &rs))
und ich habe ehrlich gesagt eine harte Zeit, es tut versuchen zu verstehen, was passiert. Ich habe versucht, mehr über Pthreads zu erforschen, aber nichts scheint zu erklären, was das tut. Er sagt, es hat etwas mit Dateideskriptoren zu tun, aber ich verstehe nicht, wie das in diesem Code ist.
'select' ist nicht von Natur aus mit Pthreads verbunden. Ohne Kontext ist es nicht klar, worauf sich Ihr Professor bezieht und damit nicht klar, was Sie fragen. Wenn Sie wissen wollen, was 'select' macht, dann ist der Ort, an dem Sie anfangen sollen, die [select man page] (http://linux.die.net/man/2/select). – kaylum
Er bringt uns bei, einen einzigen Event-Handler-Thread zu verwenden, um alle Kanäle für die Datenkommunikation mit dem Server zu verwalten. Anstatt Worker-Threads für die Bearbeitung von Einzelanfragen zu verwenden, möchte er, dass wir mehr über Ereignishandler erfahren und den Thread-Verwaltungsaufwand reduzieren. Danke auch für den Link! Ich brauche nur Hilfe zu verstehen, was dieser Code genau macht – Teflondre
Und wie wäre es mit der Manpage? Hat diese Hilfe gelesen? Wenn nicht, welchen Teil hast du nicht verstanden? Zusammenfassend können Sie mit 'select' mehrere Dateideskriptoren für definierte Ereignisse betrachten. Wenn eines dieser Ereignisse auftritt (z. B. eine Eingabe, die auf einem der fds verfügbar ist), wird die Auswahl aufgehoben und der fd-Satz kann untersucht werden, um zu sehen, welcher fd ein Ereignis hat. – kaylum