문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 무한 루프 (문서 편집) [목차] == [[프로그래밍]] 용어 == [[프로그램]]이 일련의 명령을 무한히 반복하는 것을 말한다. 이런 무한 루프는 프로그래밍 실수로 인해 발생할 수도 있고 의도적으로 탈출 조건을 설정한 다음 만들 수도 있다. {{{#!syntax cpp while(1);}}}[* [[C 언어]] family 기준.]같은 식으로 간단히 만들 수 있다.[* [[Java]], [[JavaScript]]에서는 true를 쓰지만 JavaScript 같은 경우엔 1을 넣어도 잘 작동한다.] 또는 for문을 사용하고 싶다면 {{{#!syntax cpp for(;;)}}}를 쓰면 된다.[* 일부 C 컴파일러에서는 경고 수준이 높을 경우 while(1) 문 사용 시 조건문이 상수라는 이유로 경고를 발생시킨다. for(;;)는 경고를 발생시키지 않는다. 물론 동작은 둘다 똑같이 무한 루프다.][* 컴파일러가 최적화가 잘 된 요즘에는 while(1)을 쓰나 for(;;)를 쓰나 동일하지만, 90년대 이전에는 while(1)이 루프가 돌 때마다 조건을 검사하여 약간 더 느렸었다. 그래서 옛날부터 해왔던 교수님들은 아직도 for(;;)를 선호하기도 한다. --[[숏코딩|그리고 더 짧다.]]--] [[UNIX]]의 [[터미널#s-2]] 프로그램에서 이 명령어를 입력하면 무한 루프가 행해진다.[* [[yes|해당 문서로.]] ] {{{#!syntax sh $ yes }}}이 경우에는 시스템에 부하 테스트(스트레스 테스트)를 행하기 위해 고의적으로 일으키는 루프다.[* 가끔씩 프로그램 설치할 때마다 {{{[y/n]}}} 형식의 질문에서 매번 {{{y}}} 입력하는 게 귀찮다고 쓰는 작자들도 있다(...).] 정지시키기 위해서는 그냥 {{{Ctrl+C}}}를 눌러 [[인터럽트]]를 발생시키면 된다. [[스크래치(교육 플랫폼)|스크래치]]와 [[엔트리(교육 플랫폼)|엔트리]]에서는 무한/계속 반복하기 블럭이 있다. [[프로그래밍]]을 막 배우기 시작한 단계에서의 무한 루프는 대부분 실수에서 나오므로 나쁜 것이라고 생각하기 쉽지만 우리가 쓰는 거의 모든 프로그램이 실행 중이라는 것은 곧 무한 루프 속에 있다는 것을 의미한다. 예를 들어, 우리가 이렇게 모니터로 [[위키]]를 보면서 [[위키질]]을 할 수 있는 것도 OS가 무한루프를 통해 화면을 뿌리는 것을 반복하면서 동시에 입력신호를 대기하는 무한 루프가 돌아가고 있는 덕분이다. 비디오 게임 역시 마찬가지로 게임을 시작하고 가만히 놔두더라도 실제 게임 속에서는 입력 → 갱신 → 그리기라는 한 번의 루프를 초당 수십번씩 도는 것(60/144 [[FPS]] 등)을 전제로 작성되고 있다. 이것을 게임 루프라고 한다. 의도적인 무한 루프가 필요한 경우, 제어를 위해 반드시 그 탈출 조건을 만들어야 한다. 반복문 내에 break;와 같은 중단점을 삽입하거나, 좀더 안정적인 방법으로 해당 루프문에 조건을 걸어놓고 해당 조건을 충족시켜 주는 방법이 있다. 특히 멀티[[스레드]] 프로그래밍을 할때도 이런 식으로 루프를 종료한다. 시스템을 정지시켜야 할 상황 등을 위해 무한 루프를 발생시키는 [[기계어]] 명령어도 있다. 가령 인텔 [[x86]] CPU의 HLT 명령어는 더 이상의 명령어 실행을 정지시키고 인터럽트나 [[리셋]] 등의 특정 조작에 의해서만 동작을 재개하는 명령어이다. 간혹 한 발 더 나아가 [[장비를 정지합니다|인터럽트나 시스템 명령에도 응답하지 않고 유의미한 동작을 하는 것도 아니거니와 내부에서는 바쁘게 돌아가는]], 무의미한 동작 상태에 빠지는 명령어가 있을 수도 있는데, 실행은 정지되고 그리 바쁘게 돌아가다 보면 불 붙겠네 해서 이런 명령에 붙는 별명이 Halt and Catch Fire (HCF).[* 정작 이 항목에는 HCF로는 [[HCF|HANGUL CHOSEONG FILLER]] 때문에 들어올 수 없다.] 보통은 [[펜티엄]]의 버그와 같이 이런 동작을 의도하지 않은 경우가 많지만, 명령 실행은 하지 않으나 의미있는 동작을 하는 CPU도 존재한다. 그 예로 모토로라 68k 프로세서에는 명령 수행을 중지하고 0번지부터 시작해서 모든 가용 메모리 워드를 매 클럭마다 읽어들이지만 그것으로 유의미한 결과를 내지는 않는 명령어가 있는데, 이는 벤더 쪽에서 버스에서의 데이터 흐름 등으로 프로세서의 기계적 결함을 진단할 수 있도록 내장한 명령어라고 한다. [[재귀함수]]는 이론상 무한루프가 가능하나, 함수 실행을 스택에 저장하기 때문에 (메모리가 유한하기에) 무한 루프가 성립하지 않고 런타임 에러가 난다. [[컴파일러]]에서 루프 한도를 직접 지정해줄 수 있다. C나 Node.js 등으로 무한 루프를 cpu 스레드 개수정도 동시에 실행하면 CPU가 100%인 것을 볼 수 있다. 프로세스 하나에서 작업을 잡고 놔주지 않기 때문. 반복문 끝에 잠시 대기로 들어가는 코드(Sleep() 등)을 사용하면 잠시 점유를 놓기 때문에 CPU 점유율이 내려간다. === 의도치 않은 무한 루프 === 흔히 있는 [[버그]]이다. 이런 점은 하드디스크가 맛가도 의도치 않은 버그를 볼 수 있으며 부등호를 숙지하지 못하는 초기에 부등호를 반대로 집어넣어서 경험해볼 수 있다. 간혹가다 함수를 설정했는데 그 함수 내에서 함수값을 가져오는 문자열을 입력한다면 무한 루프가 성립한다. '함수를 설정함→함수값이 필요함→함수값을 얻기 위해 '''함수를 설정함'''→함수값이 필요함' 식으로 무한 루프에 걸리고, 이러면 대부분 함수값을 얻으면서 설정하는 과정에서 함수값에 오류를 일으켜 오류를 내뿜거나 심하면 [[응답없음|IDE가 응답하지 않는다.]] [[Unity]]와 [[게임메이커|게임메이커 스튜디오]]의 경우에는 응답 없음도 안 뜨고 아예 뻗는다. 멀티태스킹이 되지 않는 OS는 프로그램이 무한 루프에 빠지면 리부팅밖에 답이 없다. 그렇기 때문에 언제든지 프로그램의 수행을 강제로 종료할 수 있는 키가 있다. MS-DOS는 CTRL+Pause[* 이 키의 하단에 잘 보면 'Break'라는 표기가 있다.], 유닉스 계열은 CTRL+C를 사용한다. 물론 이것도 근본적으로는 프로그램이 해당 인터럽트를 처리하지 않아서 커널에서 기본 동작인 해당 프로그램의 종료를 처리하는 것이기 때문에 해당 프로그램이 인터럽트를 무시하도록 되어 있거나[* 대표적으로 [[셸(컴퓨터)|셸]]의 경우 SIGINT (Ctrl+C)를 무시하도록 되어 있다. 당장 유닉스 셸이 SIGINT를 무시하지 않는다고 쳐 보면 실수로 Ctrl+C 한 번 누를 때마다 로그인을 다시 해야 한다!] 아래의 HCF처럼 프로그래머의 실수나 하드웨어 결함으로 인터럽트를 못 받는 상황이 되었다면 [[답이 없다]]. 스마트폰에서 이런 일이 일어날 경우를 [[벽돌현상|벽돌]] 현상이라 칭한다. == 게임 스테이지의 무한 [[루프]] == 주로 고전 게임에서 흔히 나오는 것. 마지막 스테이지를 클리어 하면 1스테이지로 돌아가고 다시 처음부터 플레이한다. [[2주차 플레이]]하고는 다른 것이 무한 루프 게임은 몇 번을 깨도 구성이 바뀌는 것이 없다. 단 무한 루프제 게임에서도 한 바퀴를 돌 때마다 구성이 조금씩 바뀌다가 무한 루프가 시작되는 주차에서 구성의 변화가 멈추는 경우는 있다. 참고로 무한루프제 게임의 경우에는 1000만점에 도달하는 것이 바로 일본 [[스코어러]]들의 최종적인 목표이다. 이러한 1000만점 목표는 [[제비우스]]가 그 시초이다. 그리고 무한 루프제를 채택한 게임에선 일정 실력 이상이 되면 하루종일 붙들고 있는게 가능한만큼 하이스코어 집계에선 무한루프의 경우 대부분 1000만점을 넘는 순간 1000만+α의 형태로 집계를 종료한다. 하지만 북미 스코어러는 그런 거 없고, '''체력이 되는 데 까지 계속 진행한다''' 예를 들면 [[자우스트]]는 자그마치 67시간 30분 동안 플레이를 하여 기네스 기록이 되었다. 게임 개발자의 입장에서는 만들기 쉽다. 끝판과 첫판을 연결하기만 하면 된다. == [[영구 패턴]] == 영구 패턴 또한 무한 루프의 일종이다. 일본 게임계에서는 특유의 [[스코어러]] 문화 때문에 영구 패턴을 영구 패턴 이외의 무한 루프와 구분해서 말하는 관행이 있지만, 서양 게임계에서는 영구 패턴 또한 loop 또는 infinite loop라고 부른다. 한국은 케바케이지만 딱히 엄밀히 정의하진 않는 편. === [[레벨 디자인]] 기법 === [youtube(mMbQo0wXBsM)] 해당 영상은 [[메탈슬러그2]]로, 선로를 포함한 배경이 숲에서 다리로 반복되다 스테이지 보스인 [[드래곤 노스케]] 부분에서 배경이 또 바뀐다. [youtube(6AmZ4lpXn70)] 해당 영상은 [[언차티드 2: 황금도와 사라진 함대]]로, 선로와 배경을 [[모듈화]]해 컨베이어처럼 반복시키지 않고 거대한 [[순환선]]처럼 만들었다.[* 이는 해당 하드웨어와 엔진이 모듈화도 필요없을 정도로 여력이 있어서 가능한 얘기다.] 이것의 핵심은 미궁 같은 구조[* [[슈퍼 마리오브라더스]] 4-4, 7-4 스테이지가 이런 경우로, E자형의 분기 중 출구 분기 외의 곳으로 나아가면 방금 지나온 분기 구조로 돌아오는 구조가 출구 분기로 들어서기 전까지 무한히 반복된다.] 혹은 달리는 차량이나 열차 등이 무대인 곳에서 구조물이나 배경들이 컨베이어 벨트처럼 계속해서 반복되며, 특정 지점에 도달 혹은 보스 제거 등 특정 목표를 만족시키면 루프 구성의 일부가 변경, 혹은 끝나거나 한다. 또한 플레이어가 올라타거나 지나가야 하는 구조물이 반복되는 경우, 최대한 걸리적 거리지 않게 일직선 형태로 되어 있다. == TCG, CCG에서의 무한 루프 == 카드게임에서 무한 루프가 나온다. A 상태 → B 상태 → C 상태 →... 다시 A상태로 오는 경우다. 다만 루프를 발동하면서 코스트가 발생하는 경우에는 몇 루프 못 가고 멈춘다. 다만 루프의 효과로 상대에게 대미지를 가한다면 원턴킬이 성립할 수 있어, 카드 개발사 측에서 제재가 들어가는게 보통. [[유희왕]]의 무한루프 사례는 [[유희왕/무한 루프]] 문서를 참조. [[매직 더 개더링]]은 유희왕과는 다르게, 사용자가 임의로 멈출 방법이 전혀 없는 채로 무한 루프에 들어가면[* 멈출 수 있을 때는 무한루프를 몇 번이나 반복할지 정해야 한다. 무한루프가 증명되었는데도 이를 그냥 반복만 하고 있는 건 시간을 일부러 끄는 반칙으로 간주하기 때문. "이러이러해서 무한루프 성립하는데 몇 번 반복할게요"라고 증명과 선언을 하고 게임을 속행한다.] '''그대로 게임이 무승부 처리된다.''' 가장 대표적인 수단이 다른 지속물이 아무 것도 없는 채로 [[망각륜]] 3개만이 서로를 추방하면서 왔다갔다하는 상태. 매온에서는 게임이 자동으로 뻗으면서 무승부 처리되고 다음 게임으로 넘어간다. [[레거시(매직 더 개더링)|레거시]]에는 '''무한히 돌아간다는 걸 증명할 수 없는''' 무한루프를 돌리는 [[https://m.dcinside.com/board/mtg/9151|Four Horsemen]]이라는 덱이 존재한다. [[하스스톤]]은 멈출 수 있는 무한 루프가 성립하는 경우가 있지만 대부분 운에 의존하거나 굉장한 수고를 들여야 하기에 인정하는 편이다. 대표적으로 무한염구 법사가 있는데, 이 외에는 턴 시간제한 때문에 실용적으로 쓰기가 다소 힘들다. 이렇게 몇 장의 카드로 플레이를 하면서 무한 루프가 되는 경우 말고 카드 효과 때문에 뭘 하는 순간 카드 효과가 무한 반복되는 경우도 있다. 대표적으로 [[아키나이 영혼사제]] + 고통의 여제.[* 아키나이는 회복을 딜로 바꾸는데, 고통의 여제는 피해를 주면 영웅을 회복시켜주는 효과를 가지고 있다. 이 둘이 필드에 있을 때 고통의 여제가 전투로 피해를 입히면 그 수치만큼 회복이 되어야 하는데 이게 피해로 바뀌고, 그러면 다시 피해를 입힌 게 되니 효과가 발동해 회복을 시키려 하나 이 역시 피해로 바뀌고...이것을 무한 반복한다. 즉 자기 영웅 체력을 깎는 자살 무한 루프.] 이 경우엔 61번 루프를 반복하게 되면 시스템상 강제로 종료하게 되어있다.[[http://www.inven.co.kr/board/powerbbs.php?come_idx=3559&name=subject&keyword=%BE%C6%C5%B0&l=4112|#]] 하지만 이후 2017년 8월 [[얼어붙은 왕좌의 기사들]]부터는 고통의 여제의 능력을 [[생명력 흡수]]라는 효과로 새로 지정하고 비슷한 카드들을 내면서 한 번만 대미지를 주고 끝나게 패치되어 더 이상 무한루프가 아니다. 이 외에도 모독이랑 특정 카드 연계[* 모독은 광역 1 피해를 주고, 이 효과로 하수인이 죽을 경우 한 번 더 발동한다. [[미궁 탐험]] 모드에 나오는 체력 1에 죽으면 바로 부활하는 [[밀랍 광전사]]라는 카드와 연계하면 무한 루프가 되며, 일반전에서도 몇 가지 카드를 연계하면 무한 루프가 가능하다.] 등 무한 루프는 몇 개 더 존재하나, 모두 일정 횟수 반복하면 시스템상 강제 중단하게 되어있다. [[Slay the Spire]]에서 [[Slay the Spire/유물#s-2.4.8|멈추지 않는 팽이]]를 얻은 채로 0코스트 카드만 남기면 무한루프가 성립한다. 직접 턴 종료를 누르기 전에는 무한번 카드를 쓸 수 있게 된다. 루프 제한이 아예 없으나 [[로그라이크]] 게임성과 극한의 [[덱 압축]]이 필요하고 카운터 보스도 있어서[* 시간포식자가 카드 12장 사용 시 턴을 강제로 끊는다. 다만 그 대가로 시간포식자의 단순 전투력은 형편없으므로, 성장성을 담당하는 카드나 유물을 챙겨갔다면 뚫을 수 있다.] 정말 보기 힘들다. 다른 방법으로는 핸드에 덱의 모든 카드를 들고[* 뽑을 카드 더미와 버린 카드 더미를 완전히 없애버려야 한다. 핸드 제한은 10장이므로 덱이 10장 이하여야 한다. 물론 전투 도중 소멸시켜서 덱을 줄여도 된다.] 강철의 섬광 같은 0코스트 1드로 카드를 쓰면 쓰자마자 다시 핸드로 돌아오는데[* 버린 카드 더미에 들어가자마자 뽑을 카드 더미가 없으므로 덱을 섞고, 뽑을 카드 더미가 단 하나 뿐이므로 바로 다시 집어오는 것.] 이래도 무한 루프가 성립한다. 해시계[* 덱을 3번 섞을 때마다 에너지 2 제공], 주판[* 덱을 섞을 때마다 방어도 6 제공] 같은 유물도 있기 때문에 각만 선다면 별별 덱으로 무한루프를 돌리는 게 가능하다. [[포켓몬스터 TCG]]에서도 익스펜디드(엑스트라 룰)에서 무한 루프를 할 수 있는 방법이 존재한다. 준비물은 XY11의 클레피와 포푸니라. 방법은 간단한데 포푸니라가 필드에 있다면 먼저 클래피를 내보내고 클레피의 특성을 사용해 도구로써 포푸니라에게 붙이고 포푸니라의 특성으로 다시 클레피를 패로 되돌리는 과정을 반복하면 된다. 얼핏보면 이 루프는 정말 아무 의미 없는 루프지만 몇몇 카드들과 시너지가 상당한데 BW확장팩 1탄의 란쿨루스와 체력높은 포켓몬 여럿, 스타디움 마그마단의 비밀기지와 조합해 클래피를 내보냈을때 데미지를 올리게 되면 그 데미지를 란쿨루스의 특성으로 옮기고 클레피의 특성을 사용해 도구로 다른포켓몬에게 붙인뒤 포푸니라의 특성으로 패로 되돌리는것을 반복, 이렇게 자신의 필드에 데미지 카운터가 66개 이상이면 SM8의 안농(041/095)을 이용해 특수승리하는 방법이 있었다...만 익스펜디드(엑스트라 룰)에서 SM8의 안농(041/095)이 금지를 당했다.(다만 무한루프를 할 수 있는 카드가 금지를 당한게 아니라 무한루프는 여전히 성립한다.) [[레전드 오브 룬테라]]는 코스트 감소 카드를 활용해 무한루프를 성립시킬 수 있지만, 유저가 직접 카드를 계속 내는 방식으로 유저가 제어할 수 없는 무한루프는 현재까지 없다. 가장 유명한 건 [[레전드 오브 룬테라/슈리마|아크샨]]으로, 2레벨 명소 초읽기를 완성하면 얻는 감시자의 보물의 효과중 카드 2장을 뽑고 모든 카드 비용 1 감소가 있다. 이 카드를 여러번 써서 코스트를 계속 낮춰서 무한루프를 성립시키는 것. 초기에 썼던 건 [[레전드 오브 룬테라/아이오니아|아이오니아]] 지역을 조합해 나보리 음모자끼리 계속 귀환시키는 것으로, 아크샨 2레벨 명소 초읽기 효과에 아군을 지정하면 초읽기 진행 효과가 있어 저짓을 계속 반복하면 감시자의 보물을 또 얻어서 코스트를 계속 줄일 수 있다. 그런 뒤 기절 주문인 뇌진탕 유발자를 귀환을 이용해 계속 써서 전체 스턴을 걸고 킬각을 잡는 식으로 썼다. 지금은 귀환시킨 유닛을 다시 낼 수 있는 횟수에 제한이 걸려 막혔다. 현재는 주로 [[레전드 오브 룬테라/필트오버&자운|필트오버]] 지역과 조합해 카드를 덱에 복사하는 모조품을 써서 감시자의 보물을 여러번 발동시키는 식으로 사용하지만 못뽑으면 꽝이라 운빨이 조금 필요하다. 그 외엔 [[레전드 오브 룬테라/필트오버&자운|빅토르]]와 영광스러운 진화 주문의 코스트 감소와 생성 효과가 있는 [[레전드 오브 룬테라/그림자 군도|영원그림자 사냥꾼]]의 조합이 있다. PVE 모드인 [[레전드 오브 룬테라/챔피언의 길|챔피언의 길]]에서는 매우 쉽게 볼 수 있는데, 그냥 [[레전드 오브 룬테라/녹서스|카타리나]]한테 [[레전드 오브 룬테라/챔피언의 길/아이템|마나 저장 아이템]] 하나 끼워주면 바로 무한루프가 되어 무한히 타격해서 게임을 끝낸다. 그 외에도 여러 무한콤보가 있다. == [[유튜브 크리에이터]] == [include(틀:상세 내용, 문서명=무한루프(유튜브 크리에이터))] == [[Perfume]]의 노래 == [include(틀:상세 내용, 문서명=∞ループ)] == 관련 문서 == * [[순환 논법]] * [[응답 없음]] * [[도르마무(마블 시네마틱 유니버스)]] * [[이자나미(나루토)]] * [[들어올 때는 마음대로였겠지만 나갈 때는 아니란다]] * [[바이츠 더 더스트]] * [[을지로순환선|서울 지하철 2호선 을지로순환선]]: 실제로 50km정도 되는 거리를 한 열차가 5~6번씩 돈다. 그걸 50~60편성이 실행한다.(지선 제외). * [[회전교차로|로터리]]: 실제로 [[초보운전]]자들은 이곳에서 자주 도는 일이 많다고 한다. * [[파기]]: [[법원조직법]] 제8조에 따라 대법원에서의 판단은 해당 사건에 관하여 하급심을 기속한다. 하급심 법원이 대법원의 판단을 무시하고 하급심은 계속 상급심에 올려보내고 상급심은 이를 계속 파기하는 무한루프에 빠지는 사태를 막기 위해서다. * [[골드 익스피리언스 레퀴엠]]: 진실에 도달하는 것을 막는 능력이기 때문에 어떤 일이 일어났다는 진실을 제로로 만든다. 자세한 것은 [[골드 익스피리언스 레퀴엠|여기]]와 [[디아볼로|여기]]로... * [[이니셜D 아케이드 스테이지 8 인피니티]]: 이 게임은 버전 8에 맞게 제목엔 무한루프가 하단에 나오고 게임 로딩중에 오른쪽 하단을 보면 무한루프 모양의 로딩 아이콘이 나온다. * [[타임루프물]] * [[에멜]]: 얼티밋 에멜의 대시 어택은 한 마디로 [[용권선풍각]]인데 놀랍게도 [[벽치기]] 무한 루프가 가능하다. 대시 어택이 적을 공중으로 조금씩 띄우는 삼연타기 때문에 적을 벽 맨구석에 몰고 간 다음에 대시 어택은 명중시킨 다음 바닥에 닿기 전에 다시 명중시키면 공중으로 떠오른 채 영원히 일어설 수 없게 된다. * [[뫼비우스의 띠]] * [[역사는 반복된다]] * [[대물림]] * '''[[무한 루프]]'''~~: 이 문서로 이동하면 다시 루프된다.~~ --맞는 말이긴 하다-- * [[2022 FIFA 월드컵 카타르/H조]]: A > B > C > D > A [[분류:동음이의어]] * [[수립할수립할수립할]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기