- 主题:进程A怎么把N个超大数据连续发给另一个进程B
你代码里的std:ptr::copy_nonoverlapping感觉更好,学习了,一会我就借鉴,谢谢
【 在 xiaokang 的大作中提到: 】
: 以下是基于 Rust 语言实现的生产者 - 消费者内存共享通信程序,特别处理了消费者验证数据归属的逻辑:
: rust-producer-consumer-ipc
: Rust版生产者-消费者内存共享通信程序
: ...................
--
FROM 123.127.159.*
实际上慢,但感觉够楼主要求了
【 在 z16166 的大作中提到: 】
:
: loopback要走tcp/ip stack,理论上肯定比纯内存慢。不过没测试过。
:
: 【 在 VincentGe 的大作中提到: 】
: : 127.0.0.1 localhost 不受网卡约束,现代操作系统这两个基本上由cpu内存实现。
#发自zSMTH@23054RA19C
--
FROM 113.143.105.*
不要那么高高在上 别人请教能给出建议就给 给不了就闭嘴
都是什么毛病
【 在 redfoxzheng (小满) 的大作中提到: 】
: 做程序员之前,至少你得好好读读书。但凡认真读过几本书,也没你这个疑问
: 【 在 AlphaO 的大作中提到: 】
: : 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
: :
--
FROM 36.112.193.*
mq 或者做个有限时序队列 超过5个覆盖 这么大的数据量内存 如果数据缓冲多了也够呛
或者写硬盘文件
【 在 AlphaO (AlphaO) 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
:
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
:
--
FROM 36.112.193.*
你这说的就和没说一样 别人不是也说了可能的办法了么 只是没把握那个满足其要求
你还不如告诉他 各方案实际做下测试才知道哪个合适
【 在 redfoxzheng (小满) 的大作中提到: 】
: 1.两进程不在同一台物理机,除了socket通信,基本无其他方案。
: 2.如果在通一台物理机,最高效的就是共享内存。通用一点的考虑本地socket通信。
: 这些方案,但凡你看点操作系统,网络编程方面的书籍,也不至于两眼一麻黑,啥都不知道。就算别人告诉你方案,你还是满脑子问号。
: 【 在 AlphaO 的大作中提到: 】
--
FROM 36.112.193.*
在同一台物理机上 就做一个有限的时序队列 每个数据设置索引和标志位时间戳,
写一个处理进程管理对列的数据 超时就dump到硬盘
【 在 AlphaO (AlphaO) 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
:
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
:
--
FROM 36.112.193.*
我告诉他去看书,不是给答案。你有方法可以了讲。和我哔哔个屁呀
【 在 nextworld8 的大作中提到: 】
:
: 不要那么高高在上 别人请教能给出建议就给 给不了就闭嘴
:
: 都是什么毛病
: --
: 发自xsmth (iOS版)
: --
:
发自「今日水木 on 24129PN74C」
--
FROM 223.104.40.*
你是觉得别人语文都不好么 还是觉得你一两句话就可以把别人当傻子
【 在 redfoxzheng (小满) 的大作中提到: 】
: 我告诉他去看书,不是给答案。你有方法可以了讲。和我哔哔个屁呀
: 【 在 nextworld8 的大作中提到: 】
: :
: : 不要那么高高在上 别人请教能给出建议就给 给不了就闭嘴
--
FROM 36.112.193.*
【 在 AlphaO 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
: 我觉得共享内存是个好办法,但是会和B进程耦合,我怕它们时序接不住,进而影响我发送时序。
: ...................
从表述看, 楼主对共享内存的概念理解有误, 其实,从字面意思,共享内存就是分享内存的意思。
其原理, 就是把A进程存在的物理内存, 直接映射给B进程, 这个过程涉及的只是操作系统的虚拟内存映射,
基本不涉及物理内存的数据写入。
如果是块状内存, A创建共享内存块, 写完使用完, 共享给B进程, B用完销毁。
共享给B进程的同时, A可以同步创建另一个内存块, B进程使用之前的内存块,也不影响A新创建的另一个内存块, 因此, 也不存在影响A的发送时序的问题, 除非, B进程使用的实在太慢, A把所有物理内存都写光了, B进程还一块也没用完释放出来。
从楼主的描述看, 视频图像数据更像是流式数据, 没有头位分块, 如果要同步在同一个固定共享内存块进行读写,那就不得不考虑同步, A写满要等待B读出, 确实会影响效率。
--
FROM 115.171.155.*