首页 > 解决方案 > 在 C 中使用共享信息执行并行任务

问题描述

假设我正在构建一个接受客户端连接的程序,将每个新客户端放入列表中,将列表打印到控制台并在新客户端连接时更新。

同时(所以当 accept() 阻塞程序流时;客户端与套接字连接),我想处理用户输入。用户应始终能够通过在控制台中输入一个数字来从列表中选择一个特定的客户端进行通信(假设每个客户端对应一个唯一的数字 (id))。

我怎样才能在 C 中实现这一点?我应该使用共享内存或套接字来使用进程和交换信息,还是应该更喜欢线程?为什么?

尽管我的问题的标题有点含糊,但这个问题并不是重复的,因为我要求一种用于此特定示例的方法。

标签: cparallel-processing

解决方案


我怎样才能在 C 中实现这一点?我应该使用共享内存或套接字来使用进程和交换信息,还是应该更喜欢线程?为什么?

更喜欢线程,因为它们更容易使用。对线程之间共享的数据使用互斥锁,根据您的操作系统使用 pthread 或 winthread。这将使您尽快获得工作原型。

除了工作原型之外的任何东西都无法用您提供的信息进行评估。RAM 或磁盘中的客户端列表(可能取决于客户端大小)等有多少客户端,什么操作系统,等等...?大多数事情都有取舍。


推荐阅读