<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/cpython-git.git/Python/thread_nt.h, branch v3.7.13</title>
<subtitle>github.com: python/cpython.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/'/>
<entry>
<title>[3.7] bpo-39847: EnterNonRecursiveMutex() uses GetTickCount64() (GH-18780) (GH-18959)</title>
<updated>2020-03-12T14:28:31+00:00</updated>
<author>
<name>bobince</name>
<email>and+github@doxdesk.com</email>
</author>
<published>2020-03-12T14:28:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=feaf0c37891dfe8f0f3e643c3711af3af23bf805'/>
<id>feaf0c37891dfe8f0f3e643c3711af3af23bf805</id>
<content type='text'>
The 32-bit (49-day) TickCount relied on in EnterNonRecursiveMutex can overflow
in the gap between the 'target' time and the 'now' time WaitForSingleObjectEx
returns, causing the loop to think it needs to wait another 49 days. This is
most likely to happen when the machine is hibernated during
WaitForSingleObjectEx.

This makes acquiring a lock/event/etc from the _thread or threading module
appear to never timeout.

Replace with GetTickCount64 - this is OK now Python no longer supports XP which
lacks it, and is in use for time.monotonic().

Co-authored-by: And Clover &lt;and.clover@bromium.com&gt;
(cherry picked from commit 64838ce)

Co-authored-by: bobince &lt;and+github@doxdesk.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The 32-bit (49-day) TickCount relied on in EnterNonRecursiveMutex can overflow
in the gap between the 'target' time and the 'now' time WaitForSingleObjectEx
returns, causing the loop to think it needs to wait another 49 days. This is
most likely to happen when the machine is hibernated during
WaitForSingleObjectEx.

This makes acquiring a lock/event/etc from the _thread or threading module
appear to never timeout.

Replace with GetTickCount64 - this is OK now Python no longer supports XP which
lacks it, and is in use for time.monotonic().

Co-authored-by: And Clover &lt;and.clover@bromium.com&gt;
(cherry picked from commit 64838ce)

Co-authored-by: bobince &lt;and+github@doxdesk.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-33316: PyThread_release_lock always fails (GH-6541)</title>
<updated>2019-02-02T16:45:50+00:00</updated>
<author>
<name>Miss Islington (bot)</name>
<email>31488909+miss-islington@users.noreply.github.com</email>
</author>
<published>2019-02-02T16:45:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=c851dfc99b28c7335d42abd8250bb77c11ce23c0'/>
<id>c851dfc99b28c7335d42abd8250bb77c11ce23c0</id>
<content type='text'>
Use correct interpretation of return value from APIs.
(cherry picked from commit 05e922136a3286893bd489a8f2ecfa0dba4da368)

Co-authored-by: native-api &lt;ivan_pozdeev@mail.ru&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use correct interpretation of return value from APIs.
(cherry picked from commit 05e922136a3286893bd489a8f2ecfa0dba4da368)

Co-authored-by: native-api &lt;ivan_pozdeev@mail.ru&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo in thread_nt.h code comment (GH-5211)</title>
<updated>2018-01-17T23:21:01+00:00</updated>
<author>
<name>hui shang</name>
<email>shangdahao@gmail.com</email>
</author>
<published>2018-01-17T23:21:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=6027802ca7fae118bce6afead51d01a174600d40'/>
<id>6027802ca7fae118bce6afead51d01a174600d40</id>
<content type='text'>
The comment for PyThread_allocate_lock says "It has too be implemented ...".
There was an extra "o" in ".. to be implemented.."</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The comment for PyThread_allocate_lock says "It has too be implemented ...".
There was an extra "o" in ".. to be implemented.."</pre>
</div>
</content>
</entry>
<entry>
<title>Replace KB unit with KiB (#4293)</title>
<updated>2017-11-08T22:44:44+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-11-08T22:44:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=8c663fd60ecba9c82aa4c404dbfb1aae69fe8553'/>
<id>8c663fd60ecba9c82aa4c404dbfb1aae69fe8553</id>
<content type='text'>
kB (*kilo* byte) unit means 1000 bytes, whereas KiB ("kibibyte")
means 1024 bytes. KB was misused: replace kB or KB with KiB when
appropriate.

Same change for MB and GB which become MiB and GiB.

Change the output of Tools/iobench/iobench.py.

Round also the size of the documentation from 5.5 MB to 5 MiB.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
kB (*kilo* byte) unit means 1000 bytes, whereas KiB ("kibibyte")
means 1024 bytes. KB was misused: replace kB or KB with KiB when
appropriate.

Same change for MB and GB which become MiB and GiB.

Change the output of Tools/iobench/iobench.py.

Round also the size of the documentation from 5.5 MB to 5 MiB.</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-30768: Recompute timeout on interrupted lock (GH-4103)</title>
<updated>2017-10-24T23:53:32+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-10-24T23:53:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=850a18e03e8f8309bc8c39adc6e7d51a4568cd9a'/>
<id>850a18e03e8f8309bc8c39adc6e7d51a4568cd9a</id>
<content type='text'>
Fix the pthread+semaphore implementation of
PyThread_acquire_lock_timed() when called with timeout &gt; 0 and
intr_flag=0: recompute the timeout if sem_timedwait() is interrupted
by a signal (EINTR).

See also the PEP 475.

The pthread implementation of PyThread_acquire_lock() now fails with
a fatal error if the timeout is larger than PY_TIMEOUT_MAX, as done
in the Windows implementation.

The check prevents any risk of overflow in PyThread_acquire_lock().

Add also PY_DWORD_MAX constant.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the pthread+semaphore implementation of
PyThread_acquire_lock_timed() when called with timeout &gt; 0 and
intr_flag=0: recompute the timeout if sem_timedwait() is interrupted
by a signal (EINTR).

See also the PEP 475.

The pthread implementation of PyThread_acquire_lock() now fails with
a fatal error if the timeout is larger than PY_TIMEOUT_MAX, as done
in the Windows implementation.

The check prevents any risk of overflow in PyThread_acquire_lock().

Add also PY_DWORD_MAX constant.</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-25658: Implement PEP 539 for Thread Specific Storage (TSS) API (GH-1362)</title>
<updated>2017-10-06T10:41:34+00:00</updated>
<author>
<name>Masayuki Yamamoto</name>
<email>ma3yuki.8mamo10@gmail.com</email>
</author>
<published>2017-10-06T10:41:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=731e18901484c75b60167a06a0ba0719a6d4827d'/>
<id>731e18901484c75b60167a06a0ba0719a6d4827d</id>
<content type='text'>
See PEP 539 for details.

Highlights of changes:

- Add Thread Specific Storage (TSS) API
- Document the Thread Local Storage (TLS) API as deprecated
- Update code that used TLS API to use TSS API</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See PEP 539 for details.

Highlights of changes:

- Add Thread Specific Storage (TSS) API
- Document the Thread Local Storage (TLS) API as deprecated
- Update code that used TLS API to use TSS API</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-30860: Consolidate stateful runtime globals. (#3397)</title>
<updated>2017-09-08T05:51:28+00:00</updated>
<author>
<name>Eric Snow</name>
<email>ericsnowcurrently@gmail.com</email>
</author>
<published>2017-09-08T05:51:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=2ebc5ce42a8a9e047e790aefbf9a94811569b2b6'/>
<id>2ebc5ce42a8a9e047e790aefbf9a94811569b2b6</id>
<content type='text'>
* group the (stateful) runtime globals into various topical structs
* consolidate the topical structs under a single top-level _PyRuntimeState struct
* add a check-c-globals.py script that helps identify runtime globals

Other globals are excluded (see globals.txt and check-c-globals.py).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* group the (stateful) runtime globals into various topical structs
* consolidate the topical structs under a single top-level _PyRuntimeState struct
* add a check-c-globals.py script that helps identify runtime globals

Other globals are excluded (see globals.txt and check-c-globals.py).</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "bpo-30860: Consolidate stateful runtime globals." (#3379)</title>
<updated>2017-09-06T04:43:08+00:00</updated>
<author>
<name>Eric Snow</name>
<email>ericsnowcurrently@gmail.com</email>
</author>
<published>2017-09-06T04:43:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=05351c1bd8b70d1878527762174cdaaba3572395'/>
<id>05351c1bd8b70d1878527762174cdaaba3572395</id>
<content type='text'>
Windows buildbots started failing due to include-related errors.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Windows buildbots started failing due to include-related errors.</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-30860: Consolidate stateful runtime globals. (#2594)</title>
<updated>2017-09-06T01:26:16+00:00</updated>
<author>
<name>Eric Snow</name>
<email>ericsnowcurrently@gmail.com</email>
</author>
<published>2017-09-06T01:26:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=76d5abc8684bac4f2fc7cccfe2cd940923357351'/>
<id>76d5abc8684bac4f2fc7cccfe2cd940923357351</id>
<content type='text'>
* group the (stateful) runtime globals into various topical structs
* consolidate the topical structs under a single top-level _PyRuntimeState struct
* add a check-c-globals.py script that helps identify runtime globals

Other globals are excluded (see globals.txt and check-c-globals.py).

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* group the (stateful) runtime globals into various topical structs
* consolidate the topical structs under a single top-level _PyRuntimeState struct
* add a check-c-globals.py script that helps identify runtime globals

Other globals are excluded (see globals.txt and check-c-globals.py).

</pre>
</div>
</content>
</entry>
<entry>
<title>bpo-30832: Remove own implementation for thread-local storage (#2537)</title>
<updated>2017-07-03T11:34:38+00:00</updated>
<author>
<name>Masayuki Yamamoto</name>
<email>ma3yuki.8mamo10@gmail.com</email>
</author>
<published>2017-07-03T11:34:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/cpython-git.git/commit/?id=aa0aa0492c5fffe750a26d2ab13737a1a6d7d63c'/>
<id>aa0aa0492c5fffe750a26d2ab13737a1a6d7d63c</id>
<content type='text'>
* bpo-30832: Remove own implementation for thread-local storage

CPython has provided the own implementation for thread-local storage
(TLS) on Python/thread.c, it's used in the case which a platform has
not supplied native TLS.  However, currently all supported platforms
(NT and pthreads) have provided native TLS and defined the
Py_HAVE_NATIVE_TLS macro with unconditional in any case.

* bpo-30832: replace NT with Windows

* bpo-30832: change to directive chain

* bpo-30832: remove comemnt which making no sense
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* bpo-30832: Remove own implementation for thread-local storage

CPython has provided the own implementation for thread-local storage
(TLS) on Python/thread.c, it's used in the case which a platform has
not supplied native TLS.  However, currently all supported platforms
(NT and pthreads) have provided native TLS and defined the
Py_HAVE_NATIVE_TLS macro with unconditional in any case.

* bpo-30832: replace NT with Windows

* bpo-30832: change to directive chain

* bpo-30832: remove comemnt which making no sense
</pre>
</div>
</content>
</entry>
</feed>
