mirror of https://github.com/python/cpython
gh-111119: Fix flaky test test_lock_two_threads (gh-111124)
This commit is contained in:
parent
cb4f7462d1
commit
264f4af506
|
@ -75,10 +75,18 @@ test_lock_two_threads(PyObject *self, PyObject *obj)
|
||||||
assert(test_data.m.v == 1);
|
assert(test_data.m.v == 1);
|
||||||
|
|
||||||
PyThread_start_new_thread(lock_thread, &test_data);
|
PyThread_start_new_thread(lock_thread, &test_data);
|
||||||
while (!_Py_atomic_load_int(&test_data.started)) {
|
|
||||||
pysleep(10);
|
// wait up to two seconds for the lock_thread to attempt to lock "m"
|
||||||
}
|
int iters = 0;
|
||||||
pysleep(10); // allow some time for the other thread to try to lock
|
uint8_t v;
|
||||||
|
do {
|
||||||
|
pysleep(10); // allow some time for the other thread to try to lock
|
||||||
|
v = _Py_atomic_load_uint8_relaxed(&test_data.m.v);
|
||||||
|
assert(v == 1 || v == 3);
|
||||||
|
iters++;
|
||||||
|
} while (v != 3 && iters < 200);
|
||||||
|
|
||||||
|
// both the "locked" and the "has parked" bits should be set
|
||||||
assert(test_data.m.v == 3);
|
assert(test_data.m.v == 3);
|
||||||
|
|
||||||
PyMutex_Unlock(&test_data.m);
|
PyMutex_Unlock(&test_data.m);
|
||||||
|
|
Loading…
Reference in New Issue