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.

124 3 Programmieren <strong>mit</strong> POSIX-<strong>Threads</strong><br />

48 error_exit( "pthread_mutex_unlock()", status );<br />

49 }<br />

50<br />

51 return( NULL );<br />

52 }<br />

53<br />

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

55 {<br />

56 pthread_t tid;<br />

57 char input[32];<br />

58 int status;<br />

59<br />

60 /* Datenpuffer inklusive Mutex initialisieren */<br />

61 data.in = 0;<br />

62 data.out = 0;<br />

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

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

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

66<br />

67 status = pthread_create( &tid, NULL, avg, NULL );<br />

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

69 error_exit( "pthread_create()", status );<br />

70<br />

71 for(;;) /* Endlosschleife */<br />

72 {<br />

73 /* Einen neuen Wert einlesen ... */<br />

74 printf( "input > " );<br />

75 fgets( input , sizeof( input ), stdin );<br />

76<br />

77 /* exklusiven Zugriff auf data sicherstellen */<br />

78 status = pthread_mutex_lock( &data.mutex );<br />

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

80 error_exit( "pthread_mutex_lock()", status );<br />

81<br />

82 /* Wert im Puffer speichern <strong>und</strong> Puffer weiterschalten */<br />

83 if( ( ( data.in + 1 ) % MAX_NUMBERS ) != data.out )<br />

84 {<br />

85 data.val[data.in] = atoi( input );<br />

86 data.in = ( data.in + 1 ) % MAX_NUMBERS;<br />

87 }<br />

88 else<br />

89 printf( "Puffer voll, Eingabe wiederholen.\n" );<br />

90<br />

91 /* exklusiven Zugriff auf data freigeben */<br />

92 status = pthread_mutex_unlock( &data.mutex );<br />

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

94 error_exit( "pthread_mutex_unlock()", status );<br />

95 }<br />

96

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!