单线程和多线程的区别 性能 吞吐量
若以下回答无法解决问题,邀请你更新回答
1个回答
2016-10-26
展开全部
所有数据结构的生存期,以及对这些数据结构的access,都用这一根逻辑线程。
不需要考虑数据结构的race。
把任何耗时的操作都给其他线程(IO线程、定时器线程,DB线程等)做,做完之后向事件队列(多线程安全的队列,其他线程是生产者,逻辑线程是消费者)丢事件。
多线程逻辑设计的思路:
所有数据结构的生存期,以及对这些数据结构的access,不一定在一根线程。
需要考虑数据结构的race。
网络事件、定时器事件唤醒工作线程(一般通过iocp或者epoll来唤醒)执行所有工作,一般不需要交换到其他线程。
很显然,单线程逻辑多了一层事件队列交换,会增加延迟,以及所有的逻辑都在一根线程上跑,逻辑被阻塞也会带来延迟。
其实吞吐量对于rpc来说,是个宏观的概念,尽可能快地消费网络消息就会提升吞吐量。
对于高并发的程序,是无法忍受单线程逻辑的
不需要考虑数据结构的race。
把任何耗时的操作都给其他线程(IO线程、定时器线程,DB线程等)做,做完之后向事件队列(多线程安全的队列,其他线程是生产者,逻辑线程是消费者)丢事件。
多线程逻辑设计的思路:
所有数据结构的生存期,以及对这些数据结构的access,不一定在一根线程。
需要考虑数据结构的race。
网络事件、定时器事件唤醒工作线程(一般通过iocp或者epoll来唤醒)执行所有工作,一般不需要交换到其他线程。
很显然,单线程逻辑多了一层事件队列交换,会增加延迟,以及所有的逻辑都在一根线程上跑,逻辑被阻塞也会带来延迟。
其实吞吐量对于rpc来说,是个宏观的概念,尽可能快地消费网络消息就会提升吞吐量。
对于高并发的程序,是无法忍受单线程逻辑的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询