【问题标题】:shared memory across compilers?跨编译器共享内存?
【发布时间】:2010-09-07 09:56:53
【问题描述】:

首先我必须说我对这个话题知之甚少,如果我看起来很无知,请幽默。

由于在 g++ 编译程序中必须使用 vc++ 库的问题,我构建了一个本地服务器-客户端系统,其中服务器在 vc++ 中编译,客户端在 g++ 中编译,它们通过套接字进行交互。大量数据传输发生在套接字上(22 个字段中的每个字段接近 2,00,000 条记录),这是一个主要瓶颈,大大减慢了整个过程。有没有办法在服务器和客户端进程之间建立一种共享内存,这样访问会更快?

【问题讨论】:

  • 您好,请问您真的实现了不同编译器编译的进程之间的共享内存通信吗? (你提到了 vc++ 和 g++)。

标签: c++ c


【解决方案1】:

我假设您在 Windows 系统上使用它? (你不说。)因为它是本地客户端-服务器,你确实有其他选择。

对于大量数据的windows跨进程通信,我认为你应该考虑使用内存映射文件。这些可以使用全局内存句柄共享。然后使用用于同步的共享内核对象(我建议使用互斥锁或事件),您可以控制访问以确保以安全的方式完成。

如果它始终是本地的,那可能是您最快和最安全的方法。

(我会给你更具体的 API 信息,但我昨天把书带回家了,作为办公室清理工作的一部分 - 抱歉!)

【讨论】:

【解决方案2】:

如果它们在同一台 PC 上,那么是的,共享内存更快,并且可以在不同的程序中正常工作。

如果它在不同的 PC 上也可以,但它不会比套接字快。

【讨论】:

  • 它在同一台电脑上。如何使用共享内存?请指点我一些资源
  • 你会为我的情况推荐 boost::interprocess 吗?
  • 共享内存方法是否也适用于使用不同编译器编译的进程? (正如他的问题所暗示的那样?)
猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
相关资源
最近更新 更多