gpt4 book ai didi

windows - 套接字在同一台 PC 上的通信是否比使用共享内存慢得多?

转载 作者:可可西里 更新时间:2023-11-01 10:39:17 24 4
gpt4 key购买 nike

我有一个向外部应用程序提供视频的 Windows DLL。我的主应用程序创建每个视频帧,我使用由系统页面文件支持的全局共享内存将该帧传递给 DLL。视频帧随后由外部应用程序检索并显示。我不拥有外部应用程序,只有它加载以从中获取视频的 DLL。我正在考虑切换到基于套接字的方法来在我的主应用程序和 DLL 之间进行通信,并摆脱共享内存方法。我不喜欢看到“软页面错误”堆积如山,因为每次我向它写入新的视频帧时,我都会重复使共享内存位置无效。我相信软页面错误是无害的,只是所涉及的内存分页的副作用,但没有它我会更舒服。

由于视频的传输帧速率约为每秒 25 帧,因此我有大约 1/25 秒的时间来传输帧。这些帧绝不会大于 640 x 480,并且它们是压缩的 JPEG 帧,因此它们根本不是很大,通常约为 10,000 字节。所以这是我的问题:

在同一台 PC 上的两个套接字之间已经打开且持久的套接字连接的情况下,使用套接字而不是共享内存位置传输视频帧的时间是否会明显更长?或者在 O/S 级别,它只是一个快速的内存写入,周围有一些无关紧要的“门面装饰”以支持套接字通信?

最佳答案

使用共享内存的主要优点是避免了从应用程序到内核缓冲区(以及在接收端返回)的内存复制,并摆脱了通过系统调用从用户模式到内核模式的切换。您仍然需要协作进程之间的同步,但这可以在用户空间中完成,避免内核。所有这一切都不是微不足道的,很少有人能做对,但我的观点是切换到套接字使您的系统变慢。多少以及是否可以接受由您衡量和判断。

基于套接字的设置与基于共享内存的设置还有另一面 - 灵 active - 使用套接字可以轻松切换到分布式设置。随着网络变得越来越快,这就是您 future 可能会遇到的情况。

希望这对您有所帮助。

关于windows - 套接字在同一台 PC 上的通信是否比使用共享内存慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346221/

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