- 主题:进程A怎么把N个超大数据连续发给另一个进程B
同一台机器,那必然是走内存最快啊
--
FROM 222.129.207.*
零拷贝的话,
只能是Rust这边先用CreateFileMapping分配好共享内存,
然后在这块共享内存里直接构造/映射出T、T2的布局,最好是让放在共享内存里的T、T2只包含POD类型的数据,这样Rust直接unsafe用裸指针就能读写。
Rust进程内如果要多线程读写这块内存,就加个Mutex或者自旋锁。
如果里面只是POD数据,可以通过 unsafe impl 为结构体T、T2手动实现 Send 和 Sync
【 在 AlphaO 的大作中提到: 】
: 谢谢。
: 虽然现在我就类似这样,用Windows API实现的(信号邮箱用于交互元信息),但其实到头来还是得“拷贝”,从进程A的数据结构T,拷贝一部分结构T2到共享内存块SharedMemory中,然后共享给B进程映射回T2。
: 这里面多了一个拷贝到内存块的过程,看起来不是完全态的共享内存。
: ...................
--
FROM 222.129.207.*
loopback要走tcp/ip stack,理论上肯定比纯内存慢。不过没测试过。
【 在 VincentGe 的大作中提到: 】
: 127.0.0.1 localhost 不受网卡约束,现代操作系统这两个基本上由cpu内存实现。
: 第二个,你这个要求强时序吗?也就是说你出的图每一帧都要被计算?是不是要求另一边处理的也要实时的?
: 如果可以丟帧,你你直接在一块内存中写入,另一个程序读就行,没有时序问题,基本表现就是一个只写一个只读。类似于虚拟屏幕的实现。
: ...................
--
FROM 222.129.207.*