별도의 스레드에서 호출하려는 함수에 여러 인수를 전달해야합니다. 나는 한 읽기 이 작업을 수행하는 일반적인 방법은, 구조체를 정의하는하는 기능을 포인터를 전달하고 인수를 역 참조하는 것입니다. 그러나이 작업을 수행 할 수 없습니다.
#include <stdio.h>
#include <pthread.h>
struct arg_struct {
int arg1;
int arg2;
};
void *print_the_arguments(void *arguments)
{
struct arg_struct *args = (struct arg_struct *)args;
printf("%d\n", args -> arg1);
printf("%d\n", args -> arg2);
pthread_exit(NULL);
return NULL;
}
int main()
{
pthread_t some_thread;
struct arg_struct args;
args.arg1 = 5;
args.arg2 = 7;
if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) {
printf("Uh-oh!\n");
return -1;
}
return pthread_join(some_thread, NULL); /* Wait until thread is finished */
}
이에 대한 출력은 다음과 같아야합니다.
5
7
그러나 내가 그것을 실행하면 실제로 다음을 얻습니다.
141921115
-1947974263
아무도 내가 뭘 잘못하고 있는지 알아?