Movatterモバイル変換


[0]ホーム

URL:


homepage

Issue12822

This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title:threading.Condition.wait(timeout) should use a monotonic clock: use pthread_condattr_setclock(CLOCK_MONOTONIC)
Type:behaviorStage:resolved
Components:Interpreter CoreVersions:Python 3.8
process
Status:closedResolution:fixed
Dependencies:Superseder:
Assigned To:Nosy List: lemburg, methane, neologix, pitrou, vstinner
Priority:normalKeywords:patch

Created on2011-08-23 07:43 bymethane, last changed2022-04-11 14:57 byadmin. This issue is nowclosed.

Files
File nameUploadedDescriptionEdit
use_monotonic_clock.patchmethane,2011-08-23 07:43review
Pull Requests
URLStatusLinkedEdit
PR 11723mergedmethane,2019-02-01 16:43
PR 11723mergedmethane,2019-02-01 16:43
Messages (13)
msg142789 -(view)Author: Inada Naoki (methane)*(Python committer)Date: 2011-08-23 07:43
Using CLOCK_MONOTONIC is better than CLOCK_REALTIME (default) for GILbecause settimeofday() may break the pthread_cond_timedwait().Attached patch uses CLOCK_MONOTONIC and clock_gettime. But I don't knowhow to write appropriate configure script."-lrt" is also needed to use clock_gettime() but I don't know how to addit to LIBS.
msg142791 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2011-08-23 07:59
See also#10278.
msg142856 -(view)Author: Charles-François Natali (neologix)*(Python committer)Date: 2011-08-23 18:54
> Using CLOCK_MONOTONIC is better than CLOCK_REALTIME (default) for GIL> because settimeofday() may break the pthread_cond_timedwait().Indeed.A couple remarks:- regular locks and conditions variables exposed by the threading module suffer from the same problem- POSIX semaphores are also affected, but you can't select an alternative clock source- actually, CLOCK_MONOTONIC is affected by NTP adjustements: while it's guaranteed not to go backward, its rate can be affectedDid you really encounter this problem, or is this just a theoretical concern?
msg142858 -(view)Author: Antoine Pitrou (pitrou)*(Python committer)Date: 2011-08-23 19:03
The patch is ok on the principle, but we do need a check that CLOCK_MONOTONIC is supported at build time.
msg142859 -(view)Author: Marc-Andre Lemburg (lemburg)*(Python committer)Date: 2011-08-23 19:15
Antoine Pitrou wrote:> > The patch is ok on the principle, but we do need a check that CLOCK_MONOTONIC is supported at build time.I think we need both: a check at build time to avoidcompiler errors and a check at runtime whether the deploymentplatform supports the clock, plus a fallback solution in caseit is not available.
msg148525 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2011-11-28 23:46
> The patch is ok on the principle, but we do need a check> that CLOCK_MONOTONIC is supported at build time.timemodule.c is now using "#ifdef CLOCK_MONOTONIC".
msg148528 -(view)Author: Antoine Pitrou (pitrou)*(Python committer)Date: 2011-11-28 23:52
Marc-Andre is right, a runtime check is probably also needed.(for example with mismatching kernel/libc)
msg148529 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2011-11-28 23:54
pthread_condattr_setclock() result should be checked."The pthread_condattr_setclock() function may fail if:EINVAL The value specified by clock_id does not refer to a known clock, or is a CPU-time clock."
msg155837 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2012-03-15 01:22
See also#14222. Python 3.3 has a new time.steady() function.
msg334621 -(view)Author: Inada Naoki (methane)*(Python committer)Date: 2019-01-31 11:19
ref:https://bugs.chromium.org/p/webrtc/issues/detail?id=9269macOS and iOS don't support pthread_condattr_setclock yet.
msg334623 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2019-01-31 11:33
See alsobpo-23428: "Use the monotonic clock for thread conditions on POSIX platforms".
msg336032 -(view)Author: Inada Naoki (methane)*(Python committer)Date: 2019-02-20 01:00
New changeset001fee14e0f2ba5f41fb733adc69d5965925a094 by Inada Naoki in branch 'master':bpo-12822: use monotonic clock for condvar if possible (GH-11723)https://github.com/python/cpython/commit/001fee14e0f2ba5f41fb733adc69d5965925a094
msg336061 -(view)Author: STINNER Victor (vstinner)*(Python committer)Date: 2019-02-20 10:36
Thanks INADA-san for fixing this old issue!
History
DateUserActionArgs
2022-04-11 14:57:21adminsetgithub: 57031
2021-10-01 08:52:42vstinnersettitle: NewGIL should use CLOCK_MONOTONIC if possible. -> threading.Condition.wait(timeout) should use a monotonic clock: use pthread_condattr_setclock(CLOCK_MONOTONIC)
2021-10-01 08:49:34vstinnerlinkissue35747 superseder
2021-10-01 08:49:02vstinnerlinkissue31267 superseder
2021-10-01 08:48:32vstinnerlinkissue23428 superseder
2019-02-20 10:36:02vstinnersetmessages: +msg336061
2019-02-20 01:00:28methanesetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2019-02-20 01:00:13methanesetmessages: +msg336032
2019-02-01 16:43:27methanesetstage: patch review
pull_requests: +pull_request11602
2019-02-01 16:43:16methanesetstage: (no value)
pull_requests: +pull_request11601
2019-02-01 06:07:37anacrolixsetnosy: -anacrolix
2019-01-31 11:33:56vstinnersetmessages: +msg334623
2019-01-31 11:19:08methanesetmessages: +msg334621
components: + Interpreter Core, - None
versions: + Python 3.8, - Python 3.2, Python 3.3
2012-03-15 01:22:35vstinnersetmessages: +msg155837
2011-11-28 23:54:44vstinnersetmessages: +msg148529
2011-11-28 23:52:36pitrousetmessages: +msg148528
2011-11-28 23:46:55vstinnersetmessages: +msg148525
2011-11-26 01:09:19anacrolixsetnosy: +anacrolix
2011-08-23 19:15:12lemburgsetnosy: +lemburg
messages: +msg142859
2011-08-23 19:03:42pitrousetnosy: +pitrou
messages: +msg142858
2011-08-23 18:54:28neologixsetnosy: +neologix
messages: +msg142856
2011-08-23 07:59:58vstinnersetmessages: +msg142791
2011-08-23 07:59:35vstinnersetnosy: +vstinner
2011-08-23 07:43:36methanecreate
Supported byThe Python Software Foundation,
Powered byRoundup
Copyright © 1990-2022,Python Software Foundation
Legal Statements

[8]ページ先頭

©2009-2026 Movatter.jp