信号量没有破坏/解除竞争条件
这里的一个选择是修改内核以允许用于读取服务器字段的低开销,安全的方法,而不会在释放存储器的情况下导致段错误.例如,您可以添加一个注册特定于线程的数据结构的系统调用;在该特定于线程的数据页面中,您可以拥有“错误处理程序跳转地址”.如果程序段错误,如果跳转地址非零,内核只是跳转到那里而不是提升SIGSEGV.或者,您可以使用类似的机制来简单地抑制违规指令. 现在你所要做的就是: >在libc init和线程启动时,注册这些特定于线程的结构,并在TLS数据中保存指向它们的指针 你去了 – 你得到了快速的算法,但你也得到了保护,以防止删除比赛.但你必须破解内核的segv处理程序才能做到这一点.可能值得在Windows上查看SEH;类似的机制在这里可以很好地运作. 在任何演员阵容中,我认为你的方法并没有出现任何问题,但我可能会遗漏一些东西.在适当的邮件列表上提出它并与futex维护者协商可能会很好;他们可能会对在内核中实现支持感兴趣,以使您更容易. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |