관리 메뉴

제목없음

코루틴(Coroutine) 본문

프로그램 작성/컴퓨터 언어

코루틴(Coroutine)

다람군 2012.06.30 02:30

코루틴은 가장 많이 사용되는 언어들에서 사용하려면 Thread를 사용하는 것보다 여러모로 복잡하기 때문에 많이 사용되지는 않습니다. Thread와 비슷하지만 한번에 하나의 함수만이 동작하는 구조라는 점에서 차이가 있습니다. 즉, 두 개 이상의 함수를 코루틴으로 구동한다면 중도에 다른 함수로 넘어가는 형식으로 작성이 됩니다.

코루틴은 대부분 resume과 yield로 명령이 구성되며, resume은 자신을 일시 정지하고 해당 코루틴으로 이동하는 명령, yield는 자신을 일시 정지하고 원래의 코루틴으로 이동하는 명령입니다. 어떻게 보면 Thread를 사용하면서 Semaphore를 사용하는 것과 비슷하다고 할 수 있습니다만, Semaphore는 동시에 실행할 수 있는 함수(를 담는 Thread)의 개수를 지정할 수 있는 반면 코루틴은 하나만 실행할 수 있지요. 이렇게 한번에 하나의 함수만 동작하는 멀티 스레드의 구조를 가진 이 코루틴을 "비 선점형 멀티 스레드 구조"라고 합니다.

현재 코루틴을 지원하는 언어는 몇 개 없으며, 대표적으로 현재 Lua 언어 및 C# 언어가 지원하고 있습니다.

function a()
    print("a1")
    coroutine.yield()
    print("a2")
end

c = coroutine.create(a)
c.resume()
print("global")
c.resume()
0 Comments
댓글쓰기 폼
Prev 1 2 3 4 5 6 7 Next