gpt4 book ai didi

c++ - posix 中的健壮 rwlock

转载 作者:太空狗 更新时间:2023-10-29 22:55:28 25 4
gpt4 key购买 nike

Posix 提供了一种将互斥锁标记为“稳健”的机制,允许多进程系统从持有互斥锁的进程崩溃中正常恢复。

pthread_mutexattr_setrobust(&mutexattr, PTHREAD_MUTEX_ROBUST);

http://man7.org/linux/man-pages/man3/pthread_mutexattr_setrobust.3.html

但是,似乎没有 rwlock(读写器锁)的等价物。

进程如何在持有 rwlock 的情况下从崩溃中正常恢复?

最佳答案

由于“并发读者”属性,实现健壮的 rwlock 实际上非常困难 - 具有有限存储但无限数量的并发读者的 rwlock 从根本上无法跟踪其读者是谁,因此如果知道当前读者是谁是要保留(为了在读者死亡时减少当前读取锁定计数),它必须是读者任务本身,而不是 rwlock,他们知道他们对它的所有权。我没有看到任何明显的方法可以将它构建在健壮的互斥体之上,或者建立在通常用于实现健壮的互斥体的底层机制(如 Linux 上的 robust_list)之上。

如果你真的需要健壮的 rwlock 语义,你可能最好有某种协议(protocol)和一个假定不会死的专用协调进程,它通过关闭管道/套接字来跟踪客户端的死亡,并且能够通过共享内存内容判断死掉的进程是否持有读锁。请注意,这仍然涉及实现您自己的 rwlock。

关于c++ - posix 中的健壮 rwlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com