零拷贝的话,
只能是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.*