gpt4 book ai didi

c++ - 非阻塞 mlock()

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:20 24 4
gpt4 key购买 nike

有没有非阻塞的mlock()这样的东西?在交通繁忙的情况下,我不希望我的线程阻塞等待 I/O。我宁愿使用 mlock() 告诉 Linux 内核我需要从 mmap() 生成的文件中的哪个区域,然后在获取页面时得到通知。 (据我所知,标准的 mlock() 调用是阻塞的。)

最佳答案

mlock 接口(interface)似乎没有你想要的任何内置功能,所以我认为实现它的唯一方法是使用单独的线程来执行 mlock 并让该线程在 mlock 返回时通知您(通过条件变量、信号量或其他机制)。显然这会产生一些开销,但如果您的目标是获得实时延迟保证而不是改善整体运行时/平均延迟,这仍然是一个明显的胜利。

当然,除非您使用 mlockall,否则很难做出任何实时假设,因为您的代码可能会被换出。因此,使用 mlockall 和 POSIX AIO(或类似但更清晰的 API 系统,自己根据线程实现)进行读取而不是使用 mmap 可能更有意义。然后,您就可以严格保证,一旦您的数据被获取,就无法将其换出。

关于c++ - 非阻塞 mlock(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24939931/

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