我正在嘗試使用多線程程序,並且pthread_join函數出現錯誤。從這段代碼的輸出是:pthread_join之後的分段錯誤(核心轉儲)
after pthread_create
Segmentation fault (core dumped)
這裏是代碼:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *myfunc1()
{
// code segments
pthread_exit(sum1);
}
void *myfunc2()
{
// code segments
pthread_exit(sum2);
}
int main(int argc, char *argv[])
{
void *sum1, *sum2;
pthread_t thread_id1,thread_id2;
pthread_create(&thread_id1,NULL,myfunc1,NULL);
pthread_create(&thread_id2,NULL,myfunc2,NULL);
printf("after pthread_create\n");
pthread_join(thread_id1, &sum2);
pthread_join(thread_id2, &sum1);
printf("after pthread_join\n");
float firstSum = *((float *)sum1);
float secondSum = *((float *)sum2);
printf("Sum is %.5f\n\n", firstSum+secondSum);
return 0;
}
這是不是一個[MCVE] - 它不編譯! –
@PaulR它們被初始化,但在海報錯過的位的線程中。它們可能是指向float類型自動變量的指針。 – JeremyP