协程就是goto吗?两者有何异同?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
동일한 함수 내에서 goto 점프는 서로 다른 함수 사이를 점프하는 setjump 및 longjump과 유사해야 합니다.
setjump
longjump
이것은 정확하지 않습니다. 의 주요 기능 중 하나는 교차 함수 goto 입니다. 물론 goto는 함수 호출에 더 가깝습니다.
코루틴은 서브루틴의 개념을 표준화한 컴퓨터 프로그래밍의 구성 요소입니다. 코루틴은 협력적 멀티태스킹, 예외 처리, 이벤트 루프, 반복 장치, 무한 연결 목록 및 파이프 등과 같은 몇 가지 유용한 프로그램 구성 요소를 구현하는 데 매우 적합합니다.
다음은 일반 서브루틴과 코루틴을 비교합니다.
서브루틴의 시작은 유일한 진입점입니다. 종료되면 서브루틴의 실행이 완료됩니다.
서브루틴은 항상 시작 위치(일반적으로 고정 위치)에서 시작됩니다. 병렬 프로그램은 항상 마지막으로 끝난 다음 위치에서 시작됩니다.
Python의 생성기와 같이 완전한 스택이 없는 코루틴은 생성기 본체에서만 정지될 수 있습니다.
완전한 스택이 있는 코루틴은 사용자 수준 멀티태스킹을 구현하는 데 사용할 수 있지만, 완전한 스택이 없는 코루틴은 사용할 수 없습니다.
코루틴의 키워드는 Yield 입니다. 개인적으로 의미는 다음과 같아야 합니다. 실행을 중단하고 데이터를 반환합니다. 중단점으로 돌아가 실행을 다시 시작하려면 다시 호출하세요. Yield는 return 및 중단점 이동과 동일합니다.
동일한 함수 내에서 goto 점프는 서로 다른 함수 사이를 점프하는
setjump
및longjump
과 유사해야 합니다.이것은 정확하지 않습니다. 의 주요 기능 중 하나는 교차 함수 goto 입니다. 물론 goto는 함수 호출에 더 가깝습니다.
코루틴은 서브루틴의 개념을 표준화한 컴퓨터 프로그래밍의 구성 요소입니다. 코루틴은 협력적 멀티태스킹, 예외 처리, 이벤트 루프, 반복 장치, 무한 연결 목록 및 파이프 등과 같은 몇 가지 유용한 프로그램 구성 요소를 구현하는 데 매우 적합합니다.
다음은 일반 서브루틴과 코루틴을 비교합니다.
서브루틴의 시작은 유일한 진입점입니다. 종료되면 서브루틴의 실행이 완료됩니다.
서브루틴은 항상 시작 위치(일반적으로 고정 위치)에서 시작됩니다. 병렬 프로그램은 항상 마지막으로 끝난 다음 위치에서 시작됩니다.
코루틴은 Yield를 통해 다른 코루틴을 호출할 수 있습니다. Yield를 통해 실행 권한을 전달하는 코루틴 간의 관계는 호출자와 호출자 간의 관계가 아니라 서로 대칭적이고 동일합니다.Python의 생성기와 같이 완전한 스택이 없는 코루틴은 생성기 본체에서만 정지될 수 있습니다.
완전한 스택이 있는 코루틴은 사용자 수준 멀티태스킹을 구현하는 데 사용할 수 있지만, 완전한 스택이 없는 코루틴은 사용할 수 없습니다.
코루틴의 키워드는 Yield 입니다. 개인적으로 의미는 다음과 같아야 합니다.
실행을 중단하고 데이터를 반환합니다. 중단점으로 돌아가 실행을 다시 시작하려면 다시 호출하세요.
Yield는 return 및 중단점 이동과 동일합니다.