美文网首页
TCP并发服务器---多进程和多线程

TCP并发服务器---多进程和多线程

作者: LittlePy | 来源:发表于2017-07-30 12:54 被阅读70次

一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求)。并发服务器设计技术一般有:多进程服务器、多线程服务器、I/O复用服务器等。

1、多进程服务器

多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求。父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时,服务器能及时处理客户,特别是在客户服务器交互系统中。对于一个 TCP 服务器,客户与服务器的连接可能并不马上关闭,可能会等到客户提交某些数据后再关闭,这段时间服务器端的进程会阻塞,所以这时操作系统可能调度其它客户服务进程,这比起循环服务器大大提高了服务性能。

多进程并发服务器 多客户端测试 测试结果

总结:通过为每个客户端创建⼀个进程的方式, 能够同时为多个客户端进行服务,当客户端不是特别多的时候, 这种方式还行, 如果有成百上千个, 就不可取了, 因为每次创建进程等过程需要消耗较多的资源。

2、多线程服务器

多线程服务器与多进程服务器在代码上十分相似,只需要做出稍微的改动,这里不再赘述。

多线程并发服务器 执行结果

3、进程与线程的比较

从以上可以看出,多进程和多线程都实现了同样的目的,从表面来看并没有太大区别,那么进程和线程的区别究竟表现在哪里呢?

1、进程:子进程是父进程的复制品,是获得父进程数据空间、堆和栈的复制品;而线程,相对与进程而言,线程是一个更加接近执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。两者都可以提高程序的并发度,提高程序运行效率和响应时间。

2、线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器(简单来讲就是平时所说的双CPU系统,是对称多处理机中最常见的一种)上运行,而进程则可以跨机器迁移。

3、根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:a、速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内;b、资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内;c、同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内。

举一个比较形象的例子,多进程的服务器就好比是立体的交通系统(立交桥),虽然说建造的时候花费比较大,消耗的资源比较多,但是真要是跑起来不会交通堵塞。但是汽车在上面跑,相互通信就是个很费事儿问题(进程间通信比较麻烦);多线程就好比是平面的交通系统,造价低,但是很容易交通堵塞,但是也有好处,同步的时候方便。

在网络服务器方面:

单进程 < 多进程(单线程)< 多进程(多线程)

相关文章

  • Linux网络编程——tcp并发服务器(多线程)

    tcp多线程并发服务器多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用...

  • TCP并发服务器---多进程和多线程

    一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求)。并发服务器设计技术一般有:多进程服务器、多...

  • Linux网络编程客户端和服务器设计模式

    1、前言 网络编程分为客户端和服务端,服务器通常分为迭代服务器和并发服务器。并发服务器可以根据多进程或多线程进行细...

  • 03-web服务器v3.1--03

    多进程、多线程实现Http服务器 使用gevent实现Http服务器开启多任务 单进程、线程、非堵塞实现并发 长链...

  • Python爬虫之并发下载

    并发下载 多线程和多进程回顾 在前面的《进程和线程》一文中,我们已经对在Python中使用多进程和多线程实现并发编...

  • 并发编程之Concurrent.futures vs Multi

    并发编程是刚需,尤其是在多I/O操作时,多线程,协程,多进程三路英雄各显神通。多线程,协程属于并发操作,多进程属于...

  • 并发

    并发 多线程 异步IO 多进程

  • PHP 协程实现

    多进程/线程 最早的服务器端程序都是通过多进程、多线程来解决并发IO的问题。进程模型出现的最早,从Unix 系统诞...

  • TCP服务器设计

    大多数的TCP服务器进程是并发的。当一个新的连接请求到达服务器时,服务器接受这个请求,并调用一个新进程来处理这个新...

  • 线程池原理详解及如何用C语言实现线程池

    线程池是一种多线程处理形式,大多用于高并发服务器上,它能合理有效的利用高并发服务器上的线程资源;线程与进程用于处理...

网友评论

      本文标题:TCP并发服务器---多进程和多线程

      本文链接:https://www.haomeiwen.com/subject/qmbclxtx.html