【发布时间】:2012-04-26 15:21:54
【问题描述】:
所以情况是这样,我必须在 unix 中使用 c 开发一个多人游戏。现在我创建了套接字,服务器和客户端通信正常。现在这个游戏包括一个棋盘,所以每个客户端都有自己的 100x40 二维数组,并且他们使用读/写(也可以正常工作)将 x 和 y 位置发送到服务器。
现在,在服务器中,我正在使用 fork() 以便新客户端可以加入游戏。在孩子的部分,我收到 x 和 y 位置。现在我的问题是,如何将 x 和 y 位置存储到服务器中的“全局”板[100][40](因此我可以检查冲突等)。我发现的困难是每个孩子都有自己版本的板,因为我使用的是 fork(),而且我只是更新那个特定孩子的板。我希望每次客户端发送它的 x 和 y 位置时,我都会将它们放在服务器中找到的板上。
我读到我需要使用某种 IPC,比如共享内存,但无法弄清楚。如果有人可以提供帮助,将不胜感激,谢谢。
【问题讨论】:
-
这个答案可以帮到你:stackoverflow.com/questions/1327349/…
-
为什么不使用线程而不是进程?
-
我们的讲师强烈建议使用 fork 代替,因为它更容易并且不需要担心竞争条件等。
-
你不用担心竞态条件的唯一原因是,如果它们不共享内存,默认情况下分叉不共享内存,这就是它避免竞态条件的原因。只要你想要一个带有 fork 的全局内存,竞争条件就会像线程一样发生
-
确实如此。在可以使用线程通信的情况下,只需通过 IPC 使用它。你会让你的生活更轻松。
标签: c fork shared-memory