Когда `threading.RLock.acquire ()` вернет None? - PullRequest
0 голосов
/ 26 февраля 2020

В Python документах здесь указано, что

Если заблокировано более одного потока в ожидании разблокировки, будет одновременно только один поток. возможность захватить владение замком. В этом случае нет возвращаемого значения.

Но в , в каком случае?

Я экспериментировал со следующим кодом в I Python:

import time, threading

def func(rlock):
    print(rlock.acquire())
    for i in range(4):
        print(i)
        time.sleep(1)
    rlock.release()
    print('done')

rlock = threading.RLock()


# 2 threads
threading.Thread(target=func, args=[rl]).start()
threading.Thread(target=func, args=[rl]).start()

Один поток начинает работать после освобождения rlock, а затем другой:

rlock.release()

Выход

True
0
1
2
3
done
True
0
1
2
3
done

В обоих потоках rlock.acquire() получил возвращаемое значение True.

Ищете пример, где rlock.acqure() не имеет возвращаемого значения (возвращено None)?

...