我正在以下列方式创建线程:
for (i = 0; i < NTHREADS; i++)
Pthread_create(&tid, NULL, thread, NULL);
在线程中:
void *thread(void *vargp){
Pthread_detach(pthread_self());
//thread completes a job
}
我正在创建这些分离的Pthreads。但是,Valgrind显示以下错误:
==38831== 2,240 bytes in 4 blocks are possibly lost in loss record 1 of 1
==38831== at 0x4C2B974: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==38831== by 0x4011DE4: _dl_allocate_tls (in /usr/lib64/ld-2.17.so)
==38831== by 0x503F960: pthread_create@@GLIBC_2.2.5 (in /usr/lib64/libpthread-2.17.so)
==38831== by 0x402BBD: main (server.c:54)
我在这里看到了一些关于同一问题的帖子,但是有人建议分离线程。我已经这样做了。这里的方法是我创建一个工作线程池(在第一个片段中)并使用它们来执行某些任务。但在此之前我打电话给Pthread_detach
这里有什么问题?
注意功能前的有效字母是有意的。这些是包含错误检查的包装器。没什么好看的。