2014-04-24 1 views
-1

동일한 가상 공간을 공유하는 호출 스레드의 컨텍스트에서 스레드를 생성하는 시스템 호출을 작성해야합니다. 함수 헤더는 다음과 같아야합니다.직접 스레드를 생성하십시오.

thread_create(void*(*start_func)() ,void* stack, unit stack_size); 

두 번째 스레드의 헤더에 지정된 스택을 어떻게 사용해야하는지 잘 모릅니다. 나는 그것이 함수의 가상 메모리 공유 요구 사항과 관련이 있다고 확신한다.

제게는 매우 새롭고 분명하고 분명한 설명을 해주시기 바랍니다. 나는 POSIX API를 사용하고있다.

+0

이것은 시스템 호출과 마찬가지로 실행중인 OS에 따라 달라집니다. –

+0

@JohmDon posix가 다른 시스템에서 이식 가능하도록 생성되지 않았습니까? posix 호출만으로는 가능할 것으로 기대합니다. 그렇지 않으면 언급하는 것이별로 의미가 없습니다. – luk32

+0

스레드를 생성하기 위해 POSIX 시스템 호출이 있는지 확실하지는 않습니다. 다른 플랫폼에 대한 phtread 구현을 조사해야합니다. 리눅스는'clone_THREAD' 플래그와 함께 [clone] (http://linux.die.net/man/2/clone) 시스템 호출을 사용하는데, 예를 들어 –

답변

2

스레드가 많은 것을 공유 할 수 있지만 공유 할 수없는 것은 스택 공간입니다. 일반적으로 특정 OS 구현이 아니라면 새 스레드가 스택으로 사용할 메모리를 malloc() 한 다음 stack_size 매개 변수를 사용하여 스택에 할당 된 메모리 양을 새 스레드가 알 수있게 할 수 있습니다.

0

이것을 POSIX API와 함께 구현하려면 pthread_attr_setstackpthread_create API 호출을 참조하십시오. 이것은 시스템 호출이 아닌 POSIX API를 기반으로 구현할 것입니다.

관련 문제