1
我想創建2個線程,其中一個是最大值,另一個是給出在命令行中輸入的數字列表的平均值。對一個基本的多線程程序進行編碼
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <limits.h>
void * thread1(int length, int array[])
{
int ii = 0;
int smallest_value = INT_MAX;
for (; ii < length; ++ii)
{
if (array[ii] < smallest_value)
{
smallest_value = array[ii];
}
}
printf("smallest is: %d\n", smallest_value);
}
void * thread2()
{
printf("\n");
}
int main()
{
int average;
int min;
int max;
int how_many;
int i;
int status;
pthread_t tid1,tid2;
printf("How many numbers?: ");
scanf("%d",&how_many);
int ar[how_many];
printf("Enter the list of numbers: ");
for (i=0;i<how_many;i++){
scanf("%d",&ar[i]);
}
//for(i=0;i<how_many;i++)
//printf("%d\n",ar[i]);
pthread_create(&tid1,NULL,thread1(how_many,ar),NULL);
pthread_create(&tid2,NULL,thread2,NULL);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return 0;
exit(0);
}
我只是做了第一個線程,這是打印出最小。編號,但編譯時出現以下錯誤:
How many numbers?: 3
Enter the list of numbers: 1
2
3
Smallest: 1
Segmentation fault
我該如何繼續修復seg。故障?
'array'是一個'int'。您可能的意思是用'int * array'而不是'int array'聲明函數。 – 2013-03-10 20:55:22
@WilliamPursell我現在下降到'.c:58:錯誤:預期的表達式之前int .c:58:錯誤:函數太少的參數thread1 ' – PhoonOne 2013-03-10 21:00:00
void * thread1()似乎返回一個值.. – Bharat 2013-03-10 21:02:50