Skip to content

bpo-36794: Document that Lock.acquire is fair. #13082

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 29, 2019

Conversation

hniksic
Copy link
Contributor

@hniksic hniksic commented May 4, 2019

@the-knights-who-say-ni
Copy link

Hello, and thanks for your contribution!

I'm a bot set up to make sure that the project can legally accept your contribution by verifying you have signed the PSF contributor agreement (CLA).

Unfortunately we couldn't find an account corresponding to your GitHub username on bugs.python.org (b.p.o) to verify you have signed the CLA (this might be simply due to a missing "GitHub Name" entry in your b.p.o account settings). This is necessary for legal reasons before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue.

You can check yourself to see if the CLA has been received.

Thanks again for your contribution, we look forward to reviewing it!

@bedevere-bot bedevere-bot added docs Documentation in the Doc dir awaiting review labels May 4, 2019
@matrixise
Copy link
Member

matrixise commented May 7, 2019

Hi @hniksic

@the-knights-who-say-ni can't validate if you have signed the CLA because you have not yet associated your BPO account with your GitHub account. Please, could you do it and sign the CLA?

Without that, your issue could be closed in the future and your contribution won't be merged.

Thank you

waiting for the lock to be unlocked, only one coroutine
eventually proceeds.

Acquiring a lock is *fair*: the coroutine that proceeds will be
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't quite understand what you mean by "fair"? It reads oddly to me.

Copy link
Contributor Author

@hniksic hniksic May 29, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Fair" is a standard term for the kind of lock that avoids starvation by treating waiters as first-come first-serve; see e.g. here.

It should be fine if someone is not familiar with the term because the rest of the sentence explains it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see fair in multithreading context first time here.
Not sure if this is standard term.
Can we avoid this word in documentation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The term fair is widely used in this meaning across programming languages, e.g. kotlin, java, golang, c++, Python.

The idea is to use the technical term to help people already familiar with the concept, and also explain it in the rest of the sentence. That kind of usage doesn't hinder understanding, and it can even help the reader when encountering the term later.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In mentioned links fairness is used in java. kotlin inherits this term.
Golang has fairness in documentation only.
C++ and Python links point on stackoverflow which is nice site but not the official python documentation.

Docs for python threading doesn't mention fairness. I think if we add the term we should enumerate it in python glossary as well.

I still not convinced that this is required

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@1st1 what is your opinion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think using "fair" is fine here, but not really necessary as the text after the colon explains it in detail anyways.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, if Yuri agree

@asvetlov
Copy link
Contributor

Thanks, @hniksic

@miss-islington
Copy link
Contributor

Thanks @hniksic for the PR 🌮🎉.. I'm working now to backport this PR to: 3.7.
🐍🍒⛏🤖

@miss-islington
Copy link
Contributor

Sorry @hniksic, I had trouble checking out the 3.7 backport branch.
Please backport using cherry_picker on command line.
cherry_picker 34f4f5efea730504216ee19f237734e0bb0104ee 3.7

@miss-islington miss-islington self-assigned this May 29, 2019
@asvetlov
Copy link
Contributor

@hniksic if you want to backport to 3.7 please make a PR using cherry_picker tool.
I'm ok to apply changes to 3.8 only though

@Mariatta
Copy link
Member

Let me first retry the backport with miss-islington

@miss-islington
Copy link
Contributor

Thanks @hniksic for the PR 🌮🎉.. I'm working now to backport this PR to: 3.7.
🐍🍒⛏🤖

@bedevere-bot
Copy link

GH-13659 is a backport of this pull request to the 3.7 branch.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 29, 2019
miss-islington added a commit that referenced this pull request May 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Documentation in the Doc dir skip news
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants