Message202164
| Author |
vstinner |
| Recipients |
Arfrever, pitrou, serhiy.storchaka, vstinner |
| Date |
2013年11月04日.20:22:11 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<CAMpsgwYoKtSPiPw_COmHEkcFROv85+Sy6rGhLLtPDJMO8aRiQA@mail.gmail.com> |
| In-reply-to |
<1383592337.06.0.220241455615.issue19466@psf.upfronthosting.co.za> |
| Content |
2013年11月4日 Antoine Pitrou <report@bugs.python.org>:
> I'm afraid clearing thread states is a bit too brutal. What if some destructor relies on contents of the thread states (e.g. thread locals)?
When Py_Finalize() is called, only one Python thread hold the GIL.
After _Py_Finalizing=tstate is set, no other thread can hold the GIL.
If another Python tries to lock the GIL, it is "killed" by
PyEval_RestoreThread().
Is that correct? If yes, in which thread would the destructor be
called? Would it read Python thread locals without holding the GIL? |
|