A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2016-October/146620.html below:

[Python-Dev] PyWeakref_GetObject() borrows its reference from... whom?

[Python-Dev] PyWeakref_GetObject() borrows its reference from... whom?MRAB python at mrabarnett.plus.com
Mon Oct 10 12:49:35 EDT 2016
On 2016-10-10 10:45, Chris Angelico wrote:
> On Mon, Oct 10, 2016 at 8:35 PM, Larry Hastings <larry at hastings.org> wrote:
>> Huh?  In all other circumstances, a "borrowed" reference is exactly that: X
>> has a reference, and you are relying on X's reference to keep the object
>> alive.  Borrowing from a borrowed reference is simply a chain of these; Z
>> borrows from Y, Y borrows from X, and X is the original person who did the
>> incref.  But you're borrowing from something specific, somebody who the API
>> guarantees has a legitimate reference on the object and won't drop it while
>> you're using it.  I bet for every other spot in the API I can tell you from
>> whom you're borrowing the reference.
>
> Okay. Here's a test:
>
> PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)
> Return value: Borrowed reference.
>
> Presumably you own a reference to the list itself before you call
> this, and the list has a reference to its items. But suppose another
> thread clear()s the list immediately after you call this; whose
> reference are you borrowing now? The list's is gone.
>
> Or is this another API that will have to change post gilectomy?
>
Couldn't the reference to the list also be borrowed?

If you lookup something in a dict, it'll be a borrowed reference.

If the dict is globals() and there's no GIL, another thread could delete 
the item while your code had the borrowed reference.

It looks like there might be a lot that will need to changed post gilectomy!

More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4