05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.2 Synchronisation 133<br />

96–103<br />

In einer Endlosschleife wartet der Erzeuger auf neue Eingaben. Sobald er einen<br />

neuen Zahlenwert eingelesen hat, betritt der Thread durch sperren des Mutex<br />

data.mutex seinen kritischen Bereich.<br />

Beispiel 3.7. average-mutex-cv.c, Teil 2<br />

67 int main( int argc, char *argv[] )<br />

68 {<br />

69 pthread_t tid;<br />

70 char input[32];<br />

71 int i, status;<br />

72<br />

73 /* Puffer , Mutex <strong>und</strong> Bedingungsvariable initialisieren */<br />

74 data.in = 0;<br />

75 data.out = 0;<br />

76 status = pthread_mutex_init( &data.mutex , NULL );<br />

77 if( status != 0 )<br />

78 error_exit( "pthread_mutex_init()", status );<br />

79 status = pthread_cond_init( &data.add, NULL );<br />

80 if( status != 0 )<br />

81 error_exit( "pthread_cond_init()", status );<br />

82 status = pthread_cond_init( &data.rem, NULL );<br />

83 if( status != 0 )<br />

84 error_exit( "pthread_cond_init()", status );<br />

85<br />

86 /* Die gewünschte Anzahl Verbraucher -<strong>Threads</strong> starten */<br />

87 for( i = 1; i

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!