Hallo Leute, ich hoffe, dass jermend mir sagen kann wie ich 2 paralle laufende Prozesse in einem C Programm schreiben kann. Ich will die Information von 2 unterschiedlichen Client gleichzeitig bekommen und arbeiten. Von daher habe ich gedacht dass ich diesem Problem mit 2 paralle laufende Prozesse in einem C Programm lösen kann. Danke für euere Hilfe. Grüße, Buns
Gast
#877894
such mal nach posix thread ;)
Könnte auch nützlich sein, bei einer solchen Frage das verwendete Betriebssystem zu enthüllen.
Gast
#877899
also genau für den zweck gibt es doch thread - einfach mal bei createthread in der man/hilfe suchen. Aber es geht auch ohne thread, hängt von der art der Anwendung ab. Thread erzeugen einen gewissen overhead.
Andreas Kaiser wrote: > Könnte auch nützlich sein, bei einer solchen Frage das verwendete > Betriebssystem zu enthüllen. Ich benutze da Linux(Debian)
t.b.d. wrote: > such mal nach posix thread ;) Alle Fäden in der Hand Thread Programmierung unter Linux in C und C++ (Teil 1) von Wolfgang Schreiner http://www.risc.uni-linz.ac.at/people/schreine/papers/rt++-linuxmag1/main.html
Ich habe folgenden Code geschriben. Beim Kompile bekomme ich diese Meldung "undefined reference to pthread_create"
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
hier ist file encoding.h
1 | |
encoding.c
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
und meine makefile CC = /usr/bin/gcc CFLAGS = -Wall -g OBJ = main.o socket.o encoding.o main: $(OBJ) $(CC) $(CFLAGS) -o main $(OBJ) %.o: %.c $(CC) $(CFLAGS) -c $< Ich kann gerade nicht sehe wo der Fehler ist. Ich bin sehr dankbar für jeden Hinweis. Gruß Buns
probiers mit
1 | |
EDIT: Ach quatsch, das hast du ja sicher schon. du musst natürlich die LIB noch hinzulinken, in der die pthread Funktionen liegen. Siehe hier: http://www.c-plusplus.de/forum/viewtopic-var-t-is-39508.html
1 | |
zum linken dazugeben.
Simon K. wrote: > probiers mit >
1 | |
2 | |
>
Jap das habe ich schon :)
Buns
Buns Tsuko wrote: > Ich will die Information von 2 unterschiedlichen Client gleichzeitig > bekommen und arbeiten. Von daher habe ich gedacht dass ich diesem > Problem mit 2 paralle laufende Prozesse in einem C Programm lösen kann. Dazu brauchst du nicht unbedingt zwei Prozesse/Threads. Du kannst auch non-blocking sockets verwenden und diese mit select() oder poll() reihum abfragen. Das erspart es dir dich um Synchronisierung von Threads kümmern zu müssen.
Simon K. wrote: > probiers mit >
1 | |
2 | |
> > EDIT: Ach quatsch, das hast du ja sicher schon. du musst natürlich die > LIB noch hinzulinken, in der die pthread Funktionen liegen. > > Siehe hier: > http://www.c-plusplus.de/forum/viewtopic-var-t-is-39508.html > >
1 | |
zum linken dazugeben. Danke für den Hinweis. Ich muss beim Makefile nocht linken :) Gruß, Buns
Andreas Schwarz wrote: > Buns Tsuko wrote: >> Ich will die Information von 2 unterschiedlichen Client gleichzeitig >> bekommen und arbeiten. Von daher habe ich gedacht dass ich diesem >> Problem mit 2 paralle laufende Prozesse in einem C Programm lösen kann. > > Dazu brauchst du nicht unbedingt zwei Prozesse/Threads. Du kannst auch > non-blocking sockets verwenden und diese mit select() oder poll() reihum > abfragen. Das erspart es dir dich um Synchronisierung von Threads > kümmern zu müssen. Ja. Aber ich kann das nicht benutzen wenn ich die Information von A nach B und gleichzeitig von B nach A übertrage muss. Oder? Gruß, Buns
Doch, du kannst damit prinzipiell alles machen was du auch mit Threads machen kannst (vorausgesetzt du hast keine langen Berechnungen die preemtiv unterbrochen werden müssen). Du liest/schreibst nur die Daten im Buffer, das Betriebssystem kümmert sich um die eigentliche Übertragung und sagt Bescheid wenn Daten angekommen sind bzw. wieder Platz im Buffer ist.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.