我使用C語言和Linux作爲我的編程平臺。我的應用程序內存使用量正在增長,使用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 2010-06-23 00:12:51
但是如果線程已經完成(pthread_exit)呢。它使用的堆棧應該清除? – domlao 2010-06-23 00:16:16
很難知道_right_答案是什麼,不知道你在做什麼,爲什麼。當然'while(1)pthread_create'不是你最好的選擇。 :)發佈的答案提供了一種可能的解決方案 – Stephen 2010-06-23 00:23:34