푸른청년 푸르게 살고있나?  
home | 살아가기 | news | 세상보기 | tip&tech | 방명록 |  
   전체
   asp
   php
   jsp
   mssql
   mysql
   informix
   linux
   unix
   win2000
   javascript
   html
   oracle
   java
   etc
    
:: Tip&Tech > etc
코루틴, 클로저란
코루틴(coroutines)

코루틴은 쓰레드(thread)와 비슷한 개념으로 하나의 실행 흐름이라고 할 수 있다.

코루틴은 자신만의 스택을 가지고 있고, 자신만의 지역 변수를 가지며, instruction point를 갖는다.

하지만 다른 코루틴들과 전역 변수를 공유한다.


코루틴과 쓰레드의 차이점은 쓰레드는 동시에 여러 개가 수행될 수 있는 반면 코루틴은 동시에 하나밖에 수행되지 않는다는 것이다.

다른 코루틴을 수행하기 위해서는 현재 수행중인 코루틴이 suspend된 다음 새로운 코루틴을 수행해야 한다.

코루틴은 마치 예전 OS의 비선점형(non-preemptive) 쓰레드와 비슷하게 동작한다.

프로그래머가 강제로 컨텍스트 스위칭 명령(루아에서는 coroutine.yield함수를 사용한다.)을 내려주어야만 스위칭이 이루어진다.

http://blog.naver.com/kimsk99?Redirect=Log&logNo=50002970193


클로저(closure)
함수 안에 함수를 정의하는 중첩 함수(nested function)의 개념은 어렵지 않지만,
클로저는 중첩 함수에 대한 단순 함수 포인터만은 아니다.

sayHello() 함수에서 text는 지역 변수이므로 스택에 할당하는 구조를 따른다면 sayHello() 함수가 리턴된 후에는 더 이상 text 변수의 값을 읽을 수 없어야 한다.

자바스크립트에서 function() { alert(text); } 같이 클로저를 선언하면 클로저 내부에서 참조하는 지역 변수인
text를 마치 힙에 할당한 것처럼 보존한다.(즉 클로저에 대한 감춰진 포인터가 하나 더 있는 셈이다.)

따라서 sayHello() 함수가 리턴된 후에도 클로저를 호출했을 때 text 변수의 값을 읽을 수 있는 것이다.

http://skyul.tistory.com/155

날짜: 2007-06-04 16:12:41, 조회수: 4102

다음글 태터툴즈 설치후 관리자 로그인이 안될때
이전글 아리까리 했던 IT 용어들 정리

꼬리말
글쓴이 비밀번호 #스팸글방지(주인장 닉네임을 쓰시오)

  
since by 2003.03.23 / 3th 2005.07.26 / 4th 2009.04.22 made by bluesoul