homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients Mark.Shannon, eric.snow, jeremy.kloth, jkloth, larry, maciej.szulik, nanjekyejoannah, ncoghlan, phsilva, rhettinger, shihai1991, vstinner
Date 2020年03月17日.16:54:19
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1584464059.4.0.177957814513.issue39511@roundup.psfhosted.org>
In-reply-to
Content
Mark:
> The problem with having a single immortal `None`, is that it will cause data cache thrashing as two different CPUs modify the refcount on the shared `None` object.
Yeah, I concur with Mark: having one singleton per interpreter should provide better usage of the CPU caches, especially CPU data cache level 1.
Mark:
> Consider the case where a thread that doesn't hold the GIL attempts to get a reference on `None`.
The main drawback of PR 18301 is that accessing "Py_None" means accessing tstate->interp->none. Except that the commonly used _PyThreadState_GET() returns NULL if the thread doesn't hold the GIL.
One alternative would be to use PyGILState_GetThisThreadState() but this API doesn't support subinterpreters.
Maybe we are moving towards a major backward incompatible changes required to make the subinterpreters implementation more efficient.
Maybe CPython should have a backward compatible behavior by default (Py_None can be read without holding the GIL), but running subinterpreters in parallel would change Py_None behavior (cannot be read without holding the GIL).
I don't know.
History
Date User Action Args
2020年03月17日 16:54:19vstinnersetrecipients: + vstinner, rhettinger, ncoghlan, larry, jkloth, phsilva, jeremy.kloth, Mark.Shannon, eric.snow, maciej.szulik, nanjekyejoannah, shihai1991
2020年03月17日 16:54:19vstinnersetmessageid: <1584464059.4.0.177957814513.issue39511@roundup.psfhosted.org>
2020年03月17日 16:54:19vstinnerlinkissue39511 messages
2020年03月17日 16:54:19vstinnercreate

AltStyle によって変換されたページ (->オリジナル) /