코루틴 예제

직접 언어 지원이 부족하기 때문에 많은 저자는 위의 세부 사항을 숨기는 코루틴에 대한 자신의 라이브러리를 작성했습니다. 러스 콕스의 libtask 라이브러리[25]는 이 장르의 좋은 예입니다. 네이티브 C 라이브러리에서 제공하는 경우 컨텍스트 함수를 사용합니다. 그렇지 않으면 ARM, PowerPC, Sparc 및 x86에 대한 자체 구현을 제공합니다. 다른 주목할 만한 구현 포함 libpcl,[26] coro,[27] lthread,[28] libCoroutine,[29] libconcurrency,[30] libcoro,[31] ribs2,[32] libdill. [33], 리바코 [34], 그리고 libco[23]. 코루틴은 서브루틴의 일반화입니다. 프로세스가 자발적으로 양보(포기) 제어주기를 주기적으로 또는 여러 응용 프로그램을 동시에 실행할 수 있도록 유휴 상태인 협동 멀티태스킹에 사용됩니다. 코루틴과 서브 루틴의 차이점은 : 위의 예제를 수정하고 동시에 두 say_after coroutines를 실행하자 : 어떤 사람들은 비대칭 코루틴 세미 코루틴을 호출합니다 (대칭이 아니기 때문에 실제로 는 공동이 아닙니다). 그러나 다른 사용자는 동일한 용어 세미 코루틴을 사용하여 코루틴의 제한된 구현을 나타내며, 여기서 코루틴은 보조 함수 내에 없을 때만 실행을 일시 중단할 수 있습니다. 즉, 이러한 세미 코루틴의 본문만 얻을 수 있습니다. 파이썬의 생성기는 세미 코루틴의 이러한 의미의 예입니다. 우리가 코루틴에 보내는 어떤 값이든 (yield) 식에 의해 캡처되고 반환됩니다.

값은 send() 메서드를 통해 코루틴으로 보낼 수 있습니다. 예를 들어 접두사 “Dear”가 있는 이름을 인쇄하는 이 코루틴을 생각해 보십시오. send() 메서드를 사용하여 코루틴에 이름을 보냅니다. Kotlin/코루틴 예제에서 새로운 릴리스에 대한 알림을 받고 싶으십니까? 스칼라 코루틴은 스칼라의 코루틴 구현입니다. 이 구현은 스칼라 매크로 시스템에 의존하여 프로그램의 섹션을 정적으로 동백 개체로 변환하는 라이브러리 수준 확장입니다. 따라서 이 구현에서는 JVM에서 수정이 필요하지 않으므로 다른 JVM 간에 완전히 이식가능하며 JavaScript로 컴파일되는 Scala.js와 같은 대체 스칼라 백엔드에서 작동합니다. 【48】 기다려! 수익률은 무엇을 합니까? 그럼 우리는 동루틴으로 설정했습니다. 처음에는 값을 포함하지 않고 대신 외부에서 값을 공급합니다. .send() 메서드를 사용하여 값을 공급합니다. 다음은 예제가 다중 스레딩에 대한 소개로 자주 사용되지만 두 개의 스레드가 필요하지 않습니다.

그것은 빠르며 목록에 저장하는 대신 즉석에서 값을 생성하기 때문에 메모리에 많은 압력을 가하지 않습니다. 이제 위의 예제에서 수율을 사용하면 더 일반적으로 동루틴을 얻습니다. 코루틴은 전송되는 값을 사용합니다. 아주 기본적인 예는 파이썬의 grep 대안이 될 것입니다 : 참고 : MonoBehaviour가 비활성화 될 때 코루틴은 중지되지 않지만 확실히 파괴 된 경우에만 중지됩니다.