- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有人可以总结一下 pthread_rwlock_t 的不同成员的含义吗?
struct
{
int __lock;
unsigned int __nr_readers;
unsigned int __readers_wakeup;
unsigned int __writer_wakeup;
unsigned int __nr_readers_queued;
unsigned int __nr_writers_queued;
int __writer;
int __shared;
unsigned long int __pad1;
unsigned long int __pad2;
/* FLAGS must stay at this position in the structure to maintain
binary compatibility. */
unsigned int __flags;
} __data;
我正在调试一个锁状态如下所示的死锁:
{__data = {
__lock = 2,
__nr_readers = 24644,
__readers_wakeup = 28432136,
__writer_wakeup = 24644,
__nr_readers_queued = 0,
__nr_writers_queued = 0,
__writer = 0,
__shared = 0,
__pad1 = 0, __pad2 = 0,
__flags = 0},
__size = "\002\000\000\000D`\000\000\bױ\001D`", '\000' <repeats 41 times>,
__align = 105845174042626}
线程在尝试获取读锁时被阻塞。锁结构看起来正常吗?
操作系统为CentOS 7.6,glibc-2.17-260.el7_6.3.x86_64。
最佳答案
当前版本的 GNU libc(版本 2.25 及更高版本)附带 gdb 扩展,这些扩展将解码各种 pthread 结构的成员,包括 pthread_rwlock_t
。但是,查看此扩展的代码,它预计 pthread_rwlock_t
的内容与您所显示的完全不同,因此手动将其应用于数据转储将毫无用处。出于同样的原因,我无法告诉您这些字段的含义。
如果您确切地告诉我们您正在使用哪个 Linux 发行版,它的年龄,以及运行 /lib/libc.so.6
的输出是什么,就像它是一个程序一样(如果该文件不存在,请在 /lib
和 /lib64
的子目录中查找),我们可能会更有帮助。
也值得尝试将您的程序移动到更新的 Linux 发行版上,看看您是否仍然可以重现该问题。然后您可以自己使用 gdb 扩展。
关于c - struct pthread_rwlock_t 成员说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55727735/
我如何才能看到(在 linux 上)哪些线程拥有 pthread_rwlock_t(或 std::shared_mutex)? 对于常规互斥锁,有 Is it possible to determin
我正在声明 pthread_rwlock_t 静态全局数组。例如静态 pthread_rwlock_t cm[255];在构造函数内部,我想初始化 255 个互斥量之一(我用静态计数器跟踪) 现在我很
pthread_rwlock t1; pthread_rwlock_wrlock(&t1); pthread_rwlock t2 = t1; 发生了什么事?t2 是否锁定? 最佳答案 没有什么特别的事
有人可以总结一下 pthread_rwlock_t 的不同成员的含义吗? struct { int __lock; unsigned int __nr_readers; u
我在 C++ 中有这个简单的线程创建程序,在全局声明 RW 锁期间,progrmm 按预期执行,但是当在本地(即函数内部)声明相同的锁时,只有一个线程执行,另一个线程挂起。 工作: #include
robustness互斥量对我的程序非常重要,因为它可以处理进程在不释放互斥量的情况下死亡的情况。 但是根据文档,pthread_mutexattr_setrobust只适用于pthread_mute
我在 linux 上工作,我正在使用 pthread_rwlock,它存储在共享内存中并在多个进程之间共享。这大部分工作正常,但是当我杀死一个持有锁的进程 (SIGKILL) 时,看起来锁仍然持有(无
我是一名优秀的程序员,十分优秀!