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;
}
그러나 출력이 변경되지 않습니다 : 난 그냥 코드를 약간 변경 한 경우
는 컴파일시 경고가 변경된 코드는 다음입니다 해결. 아무도 내가 뭘 잘못했는지 말해 줄 수 있니? 스레드 함수에 배열을 보내는 적절한 방법은 무엇입니까 (이 경우)?