summaryrefslogtreecommitdiff
path: root/tsd.c
diff options
context:
space:
mode:
authorrpj <rpj>1998-09-12 12:24:21 +0000
committerrpj <rpj>1998-09-12 12:24:21 +0000
commit8536584f1efdd34256c037193c69e45ca35e336d (patch)
treed4768ab8ddf5980bc1be2cdec6c2c094cddd584d /tsd.c
parent6ce00ffe10306ce8063dad1b64530fdde4867820 (diff)
* tsd.c: Add comment explaining rationale for not building
POSIX TSD on top of Win32 TLS.
Diffstat (limited to 'tsd.c')
-rw-r--r--tsd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tsd.c b/tsd.c
index 02069a9..015af85 100644
--- a/tsd.c
+++ b/tsd.c
@@ -4,6 +4,23 @@
* Description:
* POSIX thread functions which implement thread-specific data (TSD).
*/
+
+/*
+ * Why we can't use Win32 TLS
+ * --------------------------
+ *
+ * In a word: Destructors
+ *
+ * POSIX 1003.1 1996, Section 17 allows for optional destructor functions
+ * to be associated with each key value. The destructors are called from
+ * the creating thread, which means that the calling thread must have access
+ * to the TSD keys of all active threads.
+ *
+ * If we use Win32 TLS then this is not possible since Tls*Value()
+ * functions don't allow us to access other than our own [thread's] key.
+ *
+ * As a result, these routines need to be redesigned.
+ */
#include <errno.h>