进程多线程并发情况下如何保证insert到

 我来答
司马刀剑
高粉答主

2018-06-05 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7440万
展开全部
1、多进程并发
在传统UNIX中较常用,针对每一种单独的业务逻辑的实例生成不同的线程进行处理。典型的程序实例是针对TCP的多个不同的客户端连接,fork出多个子进程进行处理,每一个客户端对应一个单独的子进程,在子进程处理退出后,由父进程回收其资源。
优点:各进程间的地址空间相互隔离,不会因为某些不当操作将整个应用搞挂。
业务逻辑代码简单清晰,代码平铺直叙,没有复杂的异步状态逻辑。
缺点:如果需要在进程间哗蔽进行交互或者共享数据,需要使用IPC。
2、多线程并发
在现代操作系统windows、linux中很常用,针对单独的业务逻辑的不同的实例在同一个进程中创建多个线程进行并发处理。典型的例子是,TCP的多个客户端在同一个进程中处理,针对每个客户端都单独对应的线程进行交互,共享同一个进程的所有资源。
优点:共享进程空间,访问共享数据非常容易。
没有多的进程空间开销,线程上下文切换快,调度效率比多进程高。
业务逻辑代码简单清晰,代码平铺直叙,没有复杂的异步状态逻辑。
缺点:维护线程的工作由进程内部代码处理,比如线程数量,增加一定的复杂性。
线程间共享数据的竞争关系复杂,需要处理同步和死锁问题。
3、IO多路复用
即在单线程控制多个异步樱芦氏业务逻辑,也就是事件驱动多个业务的状态处理,典型的有windows中的消息处理机制,还有linux中的信号量处理。可以在单一线程中,处理多种不同的业务逻辑,比如同时处理用户输出,鼠标点击,窗口重绘和网络输入。
优点:所有业务实例的逻辑在单一线程中处理,排除代码时序BUG,理论上不存在竞争和死脊散锁问题。
没有多的进程空间开销,也没有上下文切换问题,CPU利用率高。
共享进程空间,访问共享数据非常容易。
缺点:
线程需要管理多个不同实例的状态机,并正确处理对应事件导致不同状态的迁移。
业务种类多的情况下,需要人为代码控制多种状态机。
并发点越多造成状态越多,管理粒度越细, 业务逻辑代码不是顺序的,不容易维护和理解。
异步状态过多,造成资源管理较为复杂,容易产生资源泄漏。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式