2017-05-11 5 views
0

Ich wollte verstehen, was passiert, wenn ein Thread_1 pthread_cond_signal mehrmals an ein Thread_2 (wartet auf pthread_cond_wait) sendet, das bereits ein Signal empfangen hat und noch läuft.pthread_cond_signal und pthread_cond_wait, Fehlerüberprüfung

  1. Blockiert thread_1, bis das Signal verarbeitet wird?
  2. Oder wird das Signal an Thread_2 und Thread_1 ignoriert setzt seine Ausführung

In beiden oben genannten Fällen können wir keine Fehlermeldungen erhalten, so dass wir entsprechende Maßnahmen (wie Rückkehr entsprechenden Fehler in thread1) nehmen

Vielen Dank.

Antwort

1

wollte ich verstehen, was passiert, wenn ein Thread_1 pthread_cond_signal mehrmals auf eine Thread_2 sendet (auf pthread_cond_wait wartet), die ein Signal bereits erhalten hat und nach wie vor in Fortschritt.

Sie können das nicht an erster Stelle tun. pthread_cond_signal führt eine Operation für eine Bedingungsvariable durch; Es signalisiert keinen bestimmten Thread. Ich nehme an, Sie wollen fragen, was passiert, wenn ein Thread pthread_cond_signal aufruft und einen Lebenslauf angibt, der zu diesem Zeitpunkt keine Kellner hat.

  1. Blockiert thread_1, bis das Signal verarbeitet wird?
  2. Oder wird das Signal an Thread_2 und Thread_1 ignoriert setzt seine Ausführung

Letzteres. pthread_cond_signal sollte nicht als Versuch interpretiert werden, eine Nachricht an einen bestimmten Thread zu senden. Wenn irgendetwas gemeldet wird, ist es der Kernel oder durch ihn der Lebenslauf. In jedem Fall, wenn ein solcher Aufruf ausgeführt wird, während keine Threads auf dem angegebenen CV warten, hat dies keine Auswirkungen. Es blockiert den aufrufenden Thread sicher nicht.

In beiden oben genannten Fällen können wir erhalten Fehlermeldungen, so dass wir geeignete Maßnahmen (wie Rückkehr entsprechenden Fehler in thread1) nehmen

Nein, denn es ist kein Fehler zu signalisieren, ein Lebenslauf, der keine Kellner hat. Wenn Sie eine Art von synchronem Nachrichtenaustausch durchführen möchten, können Sie dies zusätzlich zu einem Mutex und einem Lebenslauf tun, aber diese liefern nicht das, was Sie wollen.

Verwandte Themen