프로그래밍 플랫폼으로 C 언어와 Linux를 사용하고 있습니다.내 app mem 사용량이 pthread를 사용하여 증가하고 있습니다.
내 사용자 공간 응용 프로그램에서. 스레드를 만들 때 pthread를 사용했습니다.
int main()
{
pthread_t thread1, thread2;
pthread_create(&thread1, NULL, fthread1, NULL);
pthread_create(&thread2, NULL, fthread2, NULL);
return 0;
}
void *fthread1(void *ptr)
{
/* do something here */
pthread_exit(NULL);
}
void *fthread2(void *ptr)
{
/* do something here */
pthread_exit(NULL);
}
내 문제는 내가 루프는 pthread_create, 내 응용 프로그램의 메모리 사용량이 더 큰지고 다시 두 개의 스레드를 만들 때입니다.
while(1)
{
pthread_create(&thread1, NULL, fthread1, NULL);
pthread_create(&thread2, NULL, fthread2, NULL);
}
VSZ 열에 Linux ps 명령 줄 도구를 사용하여 메모리 사용량을 결정합니다.
pthreads API를 사용하여 일부 부품을 놓친 것 같습니다. 내 앱이 너무 많은 메모리를 사용하지 않게하려면 어떻게해야합니까?
각 스레드는 자체 스택을 갖는 스레드를 시작합니다. 왜 메모리 사용량이 늘어날 것으로 기대하지 않습니까? – Stephen
하지만 스레드가 이미 끝난 경우 (pthread_exit)? 사용 된 스택이 지워 져야합니까? – domlao
당신이하고있는 일과 그 이유를 알지 못하면 _right_ 대답이 무엇인지 알기가 어렵습니다. 'while (1) pthread_create'는 최선의 선택이 아닙니다. :) 답변을 게시 한 가능한 솔루션을 제공합니다. – Stephen