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.1 Gr<strong>und</strong>lagen 107<br />

11<br />

12 return( NULL ); /* entspricht pthread_exit( NULL ); */<br />

13 }<br />

14<br />

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

16 {<br />

17 pthread_t tid;<br />

18 void *result;<br />

19 int status;<br />

20<br />

21 printf( "Programm läuft.\n" );<br />

22<br />

23 status = pthread_create( &tid, NULL, job, NULL );<br />

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

25 {<br />

26 printf( "Fehler in pthread_create(): %s\n",<br />

27 strerror( status ) );<br />

28 exit( 1 );<br />

29 }<br />

30<br />

31 printf( "Thread gestartet , Programm läuft weiter.\n" );<br />

32 sleep( 5 );<br />

33 printf( "Programm wartet auf Thread.\n" );<br />

34<br />

35 status = pthread_join( tid, &result );<br />

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

37 {<br />

38 printf( "Fehler in pthread_join(): %s\n",<br />

39 strerror( status ) );<br />

40 exit( 1 );<br />

41 }<br />

42<br />

43 printf( "Programm beendet sich.\n" );<br />

44 exit( 0 );<br />

45 }<br />

1–4<br />

6–13<br />

Zunächst werden die benötigten Header-Dateien eingeb<strong>und</strong>en. Die threadspezifischen<br />

Definitionen sind in der Datei vereinbart.<br />

Als nächstes folgt die Implementierung der Thread-Startfunktion job. Die<br />

Funktion (<strong>und</strong> da<strong>mit</strong> der Thread) erwartet als einziges Argument arg einen<br />

void-Zeiger, welcher keine weitere Beachtung erfährt, <strong>und</strong> macht nichts anderes,<br />

als nach einer Kontrollausgabe 15 Sek<strong>und</strong>en lang zu warten, nur um<br />

dann nach einer weiteren Kontrollausgabe wieder zurückzukehren. Der abschließende<br />

Rücksprung <strong>mit</strong>tels return() beendet den Thread <strong>und</strong> hinterlegt<br />

den übergebenen void-Zeiger (hier ein Nullzeiger) im System. Der Rückgabewert<br />

des <strong>Threads</strong> kann dadurch später von einem anderen Thread <strong>mit</strong>tels<br />

pthread_join() abgerufen werden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!