多线程编程陷阱-内存泄露
通过上几章的学习,我们基本掌握了Linux多线程编程技术,会使用线程锁来解决异步问题,也学会了提高多纯种效率的一些编程技巧。但仅凭这些知识,还不足以让我们完全胜任实际应用程序的编写。因为在多线程环境中,除线程竞争引发的异常外,还有其它一些陷阱,如果不小心掉入,也同样会引发严重的程序问题。接下来的几个章节中,我们会逐一来认识和处理这些陷阱,提高我们程稳定性。
今天的示例程序非常简单。我们依然先上代码:
#include
#include
#include
void *thread_task(void *arg)
{
int i;
pthread_t tid = pthread_self();
for (i = 0; i < 10; i++)
{
printf("[%ld] : i = %d\n", tid, i);
usleep(10);
}
return NULL;
}
int main(int argc, char *argv[])
{
int i;
pthread_t tid;
while (1)
{
int rs = pthread_create(&tid, NULL, thread_task, NULL);
if (rs)
{
printf("create thread error!\n");
}
else
{