我正在阅读标准CPython实现(cpython \ Lib_pyio.py)的BufferedRandom实现。它继承了BufferedReader和BufferedWriter。这两个类都有专用锁(互斥锁),用于保护读写操作。
我想知道为什么需要那些锁?我可以想象,如果两个线程仅读取或仅写入基础流,那么它可能会破坏BufferedReader / Writer的状态,因此拥有对读取/写入进行序列化的锁定有点道理。
这是没有意义的事实,因为有两个单独的锁,因此允许两个线程并行读取和写入。我认为它将破裂,因为只有一个基础流。
然后,也许该类不支持同时从两个线程使用?但是如果是这样,那为什么还要麻烦锁呢?
还是GIL在这里起作用?