[prev in list] [next in list] [prev in thread] [next in thread] 

List:       python-ideas
Subject:    [Python-ideas]  New PyThread_tss_ C-API for CPython
From:       "Stephen J. Turnbull" <turnbull.stephen.fw () u ! tsukuba ! ac ! jp>
Date:       2016-12-17 9:35:11
Message-ID: 22613.1743.668036.882893 () turnbull ! sk ! tsukuba ! ac ! jp
[Download RAW message or body]

Erik Bray writes:

 > Abstract
 > ========
 > 
 > The proposal is to add a new Thread Local Storage (TLS) API to CPython
 > which would supersede use of the existing TLS API within the CPython
 > interpreter, while deprecating the existing API.

Thank you for the analysis.

 > Further, the old PyThread_*_key* functions will be marked as
 > deprecated.  Additionally, the pthread implementations of the old
 > PyThread_*_key* functions will either fail or be no-ops on platforms
 > where sizeof(pythead_t) != sizeof(int).

Typo "pythead_t" in last line.

I don't understand this.  I assume that there are no such platforms
supported at present.  I would think that when such a platform becomes
supported, code supporting "key" functions becomes unsupportable
without #ifdefs on that platform, at least directly.  So you should
either (1) raise UnimplementedError, or (2) provide the API as a
wrapper over the new API by making the integer keys indexes into a
table of TSS'es, or some such device.  I don't understand how (3)
"make it a no-op" can be implemented for PyThread_create_key -- return
0 or -1?  That would only work if there's a failure return status like
0 or -1, and it seems really dangerous to me since in general a lot of
code doesn't check status even though it should.  Even for code
checking the status, the error message will be suboptimal ("creation
failed" vs. "unimplemented").

I gather from references to casting pthread_key_t to unsigned int and
back that there's probably code that does this in ways making (2) too
dangerous to support.  If true, perhaps that should be mentioned here.

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic