선입 선출

선입 선출(先入先出, , 줄여서 FIFO)은 시간과 우선 순위와 관련된 데이터를 정리하고 이용하는 방식을 줄여 말하는 것이다. 이러한 표현은 선입선처리 행위에 따라 순서대로 처리함으로써 기술을 처리하거나 수요 충돌을 관리하는 대기의 원칙을 말한다. 다시 말해, 먼저 온 것은 먼저 처리되고, 처리가 끝날 때까지 다음 것은 대기 상태에 놓이게 된다.

컴퓨터 과학

자료 구조 
컴퓨터 과학에서 이 용어는 대기열에 저장된 자료를 처리하는 방식을 일컫는다. 대기하고 있는 각 항목은 대기열의 데이터 구조에 저장된다. 대기열에 추가된 첫 데이터는 제거될 첫 데이터가 되고, 그 다음의 이어지는 항목들 또한 이와 같은 순서가 되풀이되며 처리된다. LIFO와 스택 알고리즘도 참조하라.

자료 구조는 다음과 비슷하다.
  struct fifo_node {
    struct fifo_node *next;
    value_type value;
  };

  class fifo
  {
    fifo_node *front;
    fifo_node *back;
    fifo_node *dequeue(void)
    {
      fifo_node *tmp = front;
      front = front->next;
      return tmp;
    }
    queue(value)
    {
      fifo_node *tempNode = new fifo_node;
      tempNode->value = value;
      back->next = tempNode;
      back = tempNode;
    }
  }
추상 자료 구조에 대한 더 자세한 정보를 보려면, 큐를 보라. 일반 추가에 대한 더 자세한 정보를 보려면, 서큘러 버퍼를 보라.

잘 알려진 유닉스 시스템은 C/C++ 헤더 파일인 sys/queue.h를 포함하고 있으며, 이 파일은 FIFO 대기열을 만드는 응용 프로그램들에 유용하게 쓰이는 매크로를 제공한다.

같이 보기 
 후입 선출 (LIFO: Last In, First Out)
 Garbage in, garbage out (GIGO)

정보 이론
사이버네틱스
스케줄링 알고리즘