This is the mail archive of the
pthreads-win32@sources.redhat.com
mailing list for the pthreas-win32 project.
Handle leak when using pthread mutex with win32 api threads
- From: Dmitry Sernii <bogolt at gmail dot com>
- To: pthreads-win32 at sources dot redhat dot com
- Date: Fri, 4 Mar 2005 17:52:58 +0200
- Subject: Handle leak when using pthread mutex with win32 api threads
- Reply-to: Dmitry Sernii <bogolt at gmail dot com>
Hello All!
I have handle leak, when using win32 api threads with pthread mutexes.
I'm using pthread-win32 2005-01-03 pthread snapshot.
Here is the sample application which reproduce the problem:
#include <pthread.h>
#include <windows.h>
#include <conio.h>
const int max_threads = 500;
DWORD WINAPI threadProc(void* param)
{
static pthread_mutex_t mutex(PTHREAD_RECURSIVE_MUTEX_INITIALIZER);
pthread_mutex_lock(&mutex);
pthread_mutex_unlock(&mutex);
return 0;
}
void main()
{
DWORD id;
HANDLE th[max_threads];
int i;
for (i=0;i<max_threads;i++)
th[i]=CreateThread(0,0,threadProc,0,0,&id);
for (i=0;i<max_threads;i++)
{
WaitForSingleObject(th[i],INFINITE);
CloseHandle(th[i]);
}
getch();
}
after that if you take a look at Task Manager you can see lots of
handlers used by the program. If you replace win32 API threads with
pthreads everything works fine. Also this program works ok if you
change pthread mutexes with win32 mutexes.
The same problem happends when using QT threads (version 3.3.4
)instead of win32 api threads.
problem reproduces with MSVC 6.0 compiler.
Best Regards,
Dmitrii Sernii