쓰레드로 만들 함수에 인수를 두 개 이상 줄 수 있는 방법이 있
글쓴이: wizmusa / 작성시간: 수, 2003/04/16 - 9:40오전
어떤 소스 코드를 받고 고쳐쓰고 있습니다. 그런데 다음과 같이 쓰레드를 만들어 쓰는데요.
if(pthread_create(&thread_id, NULL, (void *)doDownLoad, (void *)&threadFd)) { printf("dlServer startServer(), FAIL_CREATE_THREAD, errno = %d \n", errno); }
일단 (void *)&threadFd라는 인수를 주는 것은 알겠습니다. 제가 알고 싶은 것은
1) 원래 저렇게 (void *)를 붙여서 주소로 넘겨줘야만 하는 지 여부하구요,
2) (void *)doDownLoad에서 왜 (void *)를 앞에다 붙이는 지...
3) doDownLoad에 인수를 두 개 이상 전달하고 싶으면 어떻게 해야하는지 입니다.
검색을 이래저래 해봤는데 찾을 수가 없어서 이렇게 게시물을 올립니다. 답변 부탁드려요~~~ :)
Forums:
Re: 쓰레드로 만들 함수에 인수를 두 개 이상 줄 수 있는 방법이
1) void *인것은 어떤 데이터타입이 들어올지 모르니까 void *로 주고, 나중에 캐스팅해서 쓰게 하기 위함입니다.
2) 위와 같은 질문입니다.
3) 인수는 두개 전달 할 수 없습니다. 보통 구조체를 선언해서 그 안에 여러개의 데이터를 넣어주고, 캐스팅해서 쓰기 때문에 한개의 인수만 있어도 충분합니다.
========================================
* The truth will set you free.
Re: 쓰레드로 만들 함수에 인수를 두 개 이상 줄 수 있는 방법이
1) void *는 타입이 정해지지 않은 포인터란 뜻입니다. 목적은 캐스트없이 아무 포인터나 다 받을 수 있도록 하기 위한 것이죠. 거기다 캐스트를 하면 void *의 존재 목적이 없어집니다. 8)
2) 1번답 참조
3) 구조체를 선언한 다음 그안에 변수를 여러 개 넣으면 됩니다.
댓글 달기