代码之家  ›  专栏  ›  技术社区  ›  Tony

服务器是作为后台进程运行的无限循环吗?

  •  10
  • Tony  · 技术社区  · 16 年前

    服务器本质上是一个后台进程,运行一个无限循环,监听一个端口吗?例如:

    while(1){
       command = read(127.0.0.1:xxxx);
       if(command){
          execute(command);
       }
    }
    

    当我说服务器时,我显然不是指物理服务器(计算机)。我指的是MySQL服务器或Apache等。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Joachim Sauer    16 年前

    这或多或少是服务器软件通常做的事情。

        2
  •  6
  •   Tim Post Samir J M Araujo    15 年前

    有三种“服务器”--分叉、线程和单线程(非阻塞)。它们通常都是以你展示的方式循环的,不同的是当有东西需要服务时会发生什么。

    线程服务类似于分叉服务,但不是一个全新的进程,而是一个新的 线 为客户机提供服务(并且容易更改),通常最好不要克隆整个地址空间。这里唯一增加的复杂性是同步。

    在非阻塞http服务器上搜索一下,就会得到一些有趣的手卷式web服务器,这些服务器是作为代码编写的。

    简言之,区别在于一旦进入无止境循环,而不仅仅是无止境循环:)

        3
  •  2
  •   dlamotte    16 年前

    说起来,是的。服务器只是“永远循环”并提供服务的东西。但是,通常您会发现“守护进程”会在文件句柄上执行诸如open STDOUT和STDERR或/dev/null以及双叉等操作。从某种意义上说,您的代码是一个非常简单的“服务器”。