我想用c語言編寫一個多線程程序。我使用posix線程庫。c多線程程序
我寫了下面的代碼:
#include<stdio.h>
#include<pthread.h>
void *put (int *arg)
{
int i;
//int * p;
// p=(int*)arg;
for(i=0;i<5;i++)
{
printf("\n%d",arg[i]);
}
pthread_exit(NULL);
}
int main()
{
int a[5]={10,20,30,40,50};
pthread_t s;
pthread_create(&s,NULL,put,a);
printf("what is this\n");
return 0;
}
我只是希望我的線程就顯示出數組中的項目。有下列警告編譯的程序:
tm.c:19: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type
/usr/include/pthread.h:227: note: expected ‘void * (*)(void *)’ but argument is of type ‘void * (*)(int *)’
當我運行該程序,我得到了出來放在主線程,但沒有存儲在數組中的值。
現在誰能告訴我我做錯了什麼? 如何發送數組作爲線程函數中的參數?
如果我只是改變了代碼點點編譯時警告,解決了更改後的代碼如下:
#include<stdio.h>
#include<pthread.h>
void *put (void *arg)
{
int i;
int * p;
p=(int*)arg;
for(i=0;i<5;i++)
{
printf("\n%d",p[i]);
}
pthread_exit(NULL);
}
int main()
{
int a[5]={10,20,30,40,50};
pthread_t s;
pthread_create(&s,NULL,put,a);
printf("what is this\n");
return 0;
}
但產量不會改變。任何人都可以告訴我我做錯了什麼?將數組發送到線程函數的正確方法是什麼(在這種情況下)?