pThread segmentation fault

Gast #2204852
Lesenswert?

Hi
Ich versuche gerade mit pThreads ein Program zu schreiben und habe ein 
Problem damit. Immer wenn ich den folgenden Code ausführen will erhalte 
ich einen segmentation fault. Dies ist aber nur der Fall wenn ich im 
Main ein Join am Schluss mache. Wenn ich das Join weglasse funktioniert 
der Code. Daher würde es mich interessieren ob sich das jemand erklären 
kann. Danke im Vorhinein für alle Antworten.

Mfg Harald
1
#include <pthread.h>
2
#include <stdio.h>
3

4
void* worker1(void* i)
5
{
6
  printf("WORKER1: Worker1 starts successfully\n");
7
  return;
8
};
9

10
int main()
11
{
12
  pthread_t worker1;
13
  int i = 0;
14

15
  if((pthread_create(&worker1, NULL, (void*)worker1, (void*)i)) != 0)
16
  {
17
    printf("MAIN: Error during creation of worker1\n");
18
    return 1;
19
  }
20
  
21
  printf("MAIN: Threads created!\n");     
22

23
  pthread_join(worker1, NULL);
24
  printf("MAIN: Threads joined.\n");
25
  
26
  return 0;
27
}
Gast #2205522
Lesenswert?

Im übrigen haben die Casts da nichts zu suchen. Ohne die bekommst du es 
vermutlich nicht durch den Compiler, aber das hätte dir ein Zeichen sein 
sollen, daß da was falsch ist. Mit einem Cast bekommst du den Compiler 
immer irgendwie ruhiggestellt, denn damit sagst du ihm: "Ich weiß, daß 
das für dich unsinnig aussieht, aber ich weiß was ich tue, also mach 
einfach". Wenn du dann aber nicht weißt, was du tust, kommt dabei mit 
hoher Wahrscheinlichkeit ziemlicher Unsinn raus. Deshalb einen Cast nur 
dann verwenden, wenn du ganz genau weißt, warum du ihn brauchst!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren