This is the mail archive of the pthreads-win32@sourceware.cygnus.com mailing list for the pthreads-win32 project. See the pthreads-win32 home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

RE: TryEnterCriticalSection on Win98



Hi John,

The package uses your code verbatim apart from the additions to
check TryEnterCriticalSection. As I mentioned, the key cleanup for
the primary thread works fine on NT.

The test calls pthread_key_destroy before it exits, and then
checks that the local destroy_key routine is called for each thread
including the primary thread. An earlier test simply included a
printf inside of destroy_key and left cleanup to DllMain. The
problem I'm seeing on Win98 was the motivation for attempting to
take direct control and calling pthread_key_destroy.

I think the GetLastError always returning error number 120 in the
primary thread is strange. Do I interpret that as meaning that
GetLastError is unsupported? (It would only be unsupported in the
primary thread it seems.) Makes me wonder what else behaves
differently there, and in particular, whether there is some
methodology that is meant to be applied when writing primary thread
code.

Anyone?

Ross

On Tue, 23 Feb 1999, Bossom, John wrote:

> Hi Ross,
> 
> My original code should have been explicitly destroying the
> main thread when the DLL terminates through the use of DllMain
> when the DLL_PROCESS_DETACH is received (DLL_THREAD_DETACH for
> all others).
> 
> Beware that, for DllMain, you don't get a DLL_THREAD_ATTACH
> DLL_THREAD_DETACH for the main thread; only a DLL_PROCESS_ATTACH
> DLL_PROCESS_DETACH.
> 
> -----Original Message-----
> From: Ross Johnson [mailto:rpj@ise.canberra.edu.au]
> Sent: Tuesday, February 23, 1999 5:29 PM
> To: POSIX threads on Win32
> Subject: RE: TryEnterCriticalSection on Win98
> 
> 
> I'm probably the only one who would be confused by what I wrote
> below, but just to clarify:
> 
> > Now, all this seems to fit with other observations, namely when I
> > run the tsd1.c test, which creates and destroys TSD keys, I was
> > finding that on Win98 the pthread_destroy() was not being called for
> > the main thread key. The test runs fine on WNT.
> 
> pthread_destroy !? What am I saying? I meant to say that the
> destroy_key routine (supplied to pthread_key_create) was not being
> called for the main thread.
> 
> > 
> > Soooo, the obvious question now is, is there actually a "main
> > thread" on Win98? A second obvious question is, how come there
> > aren't thousands of applications breaking on Win98? I MUST be
> > missing something.
> > 
> 
> Ross
> 
> +----------------------+---+
> | Ross Johnson         |   | E-Mail: rpj@ise.canberra.edu.au
> | Info Sciences and Eng|___|
> | University of Canberra   | FAX:    +61 6 2015227
> | PO Box 1                 |
> | Belconnen  ACT    2616   | WWW:    http://willow.canberra.edu.au/~rpj/
> | AUSTRALIA                |
> +--------------------------+
> 
> 

+----------------------+---+
| Ross Johnson         |   | E-Mail: rpj@ise.canberra.edu.au
| Info Sciences and Eng|___|
| University of Canberra   | FAX:    +61 6 2015227
| PO Box 1                 |
| Belconnen  ACT    2616   | WWW:    http://willow.canberra.edu.au/~rpj/
| AUSTRALIA                |
+--------------------------+