项目总结一:多进程还是多线程?

软件架构到底是用多进程还是多线程好?
起初我也是多有考虑,多线程的架构的对于项目组内的成员来说更为了解,学习的成本更低,而多进程架构的项目,我在这方面并没有多少经验,早先完成的一个项目完完全全的基于多线程。最终我还是决定将整个项目基于多进程,主要原因有以下几点。
一 对于不熟悉的东西,程序员往往会有着一定的排斥感,这种排斥感会阻碍技术人员的进步,拥抱变化,学习自已不熟悉的领域才能得到进一步的提升,我对自已不熟悉的技术有着天生的好奇感,不愿意重复自已。多进程的软件架构的项目,我想试试。
二 根据产品功能的实际需求。我们的产品中内置WEBSERVER,用于功能的配置和参数的更改,这相当于UI界面.我希望我们的WEBSERVER和底层业务功能完全的分离,两者对彼此的实现毫不关心,两者之者采用协议沟通。这样可以方便的替换新的UI界面,例如我们可以加入MIUIGUI界面用于参数配置,同时保持底层的业务处理逻辑程序的一致性。

开发中得到的经验和教训
1 项目开发的初期,进程间通讯我采用共享内存的方案。 随着项目开发的深入,越来越感觉到共享内存通讯的不稳定性,最终重新用SOCKET通讯方式替换了共享内存的方式。这一来一去,浪费的大量的时间和精力.这主要还是我个人的经验不足。
2 多进程的方案增加项目成员的学习成本,特别是进程通讯的实现代码(类似DBUS)理解起来还是需要一定时间的。这也是我初期考虑较多的一个方面。从后面的项目开发来看, 单纯的添加新的进程通讯协议问题并不大。


  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在聊天室项目中,IO多路复用是一种常用的技术,用于同时处理多个客户端的输入输出。通过使用IO多路复用,可以避免为每个客户端创建一个线程或进程来处理输入输出,从而提高系统的性能和可扩展性。 在使用IO多路复用时,可以使用select、poll或epoll等系统调用来实现。这些调用可以监视多个文件描述符(包括套接字)的状态,并在有事件发生时通知应用程序。通过将多个文件描述符传递给这些系统调用,应用程序可以同时监听多个客户端的输入输出。 在使用select时,需要使用fd_set数据结构来管理文件描述符的状态。fd_set实际上是一个数组的宏定义,每个数组元素与一个文件描述符建立联系。当调用select时,内核会根据文件描述符的状态修改fd_set的内容,从而通知应用程序哪些文件描述符可读或可写。 在使用poll时,需要使用struct pollfd结构体来管理文件描述符的状态。pollfd结构体包含了文件描述符的信息以及感兴趣的事件类型。调用poll时,内核会修改pollfd结构体的revents字段,以通知应用程序哪些文件描述符可读或可写。 在使用epoll时,需要使用epoll_create、epoll_ctl和epoll_wait等函数来管理文件描述符的状态。epoll使用一个事件驱动的模型,通过注册事件和等待事件的方式来实现IO多路复用。epoll可以高效地处理大量的并发连接。 综上所述,IO多路复用是在聊天室项目中常用的技术,可以同时处理多个客户端的输入输出,提高系统的性能和可扩展性。可以使用select、poll或epoll等系统调用来实现IO多路复用,并根据具体的需求选择合适的方法。 #### 引用[.reference_title] - *1* *2* *3* [IO多路复用技术总结](https://blog.csdn.net/qigeminghao/article/details/122004757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值