mithras
11-09-2002, 11:05
Hi,
will mit unteren Code genau 20 Threads erstellen. Meine Frage ist das so korrekt?
Außerdem um zu kontrollieren ob alles passt, übergebe ich die Thread-ID, also &t[i]. Diese lasse ich dann bei jedem Thread ausgeben.
Wie sollte denn eine Thread-ID aussehen, bei mir kommen wenn ich den unteren Code ausführe ziemlich komische Zahlen, zwei Nullen und ziemlich lange positive Zahlen.
Außerdem führt jeder einzelne thread die Fkt. sleep und puts nicht aus, es wird nur der Text hinter printf ausgegebn.
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
int empfangen(int *wert);
int main(void)
{
int i;
pthread_t t[20];
for(i=0; i<20; i++)
{
if(pthread_create(&t[i], NULL, (void *)&empfangen, (int*)&t[i]) != 0) // Es wird neuer Thread aufgemacht,
{ // sodass der Server als eigener Thread erhalten bleibt!
fprintf(stderr, "Fehler bei Thread ......\n");
exit(0);
}
}
pthread_join(t[20],NULL);
return 0;
}
int empfangen(int *wert)
{
printf("\nIch bin %d\n", *wert);
sleep(2);
puts("blsbls");
sleep(1);
return 0;
}
will mit unteren Code genau 20 Threads erstellen. Meine Frage ist das so korrekt?
Außerdem um zu kontrollieren ob alles passt, übergebe ich die Thread-ID, also &t[i]. Diese lasse ich dann bei jedem Thread ausgeben.
Wie sollte denn eine Thread-ID aussehen, bei mir kommen wenn ich den unteren Code ausführe ziemlich komische Zahlen, zwei Nullen und ziemlich lange positive Zahlen.
Außerdem führt jeder einzelne thread die Fkt. sleep und puts nicht aus, es wird nur der Text hinter printf ausgegebn.
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
int empfangen(int *wert);
int main(void)
{
int i;
pthread_t t[20];
for(i=0; i<20; i++)
{
if(pthread_create(&t[i], NULL, (void *)&empfangen, (int*)&t[i]) != 0) // Es wird neuer Thread aufgemacht,
{ // sodass der Server als eigener Thread erhalten bleibt!
fprintf(stderr, "Fehler bei Thread ......\n");
exit(0);
}
}
pthread_join(t[20],NULL);
return 0;
}
int empfangen(int *wert)
{
printf("\nIch bin %d\n", *wert);
sleep(2);
puts("blsbls");
sleep(1);
return 0;
}