我正在编写一个程序,该程序有一个线程将点文件读取到缓冲区中,还有许多线程从缓冲区中获取点并构造它们的八叉树。八叉树的每个立方体都受到读写器锁(又名shared_mutex(的保护,其中有 67 个(如果有两个线程,现在有(。如果文件太大,程序就会死锁,我在尝试调试它时会感到困惑。其中一个锁在 gdb 中如下所示:
[6] = {_M_impl = {_M_rwlock = {__data = {__readers = 1,
__writers = 0, __wrphase_futex = 1, __writers_futex = 0, __pad3 = 0,
__pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 ' 00',
__pad1 = "