본문 바로가기
Programing/Knowledge

[CS] Invoke & Call & Trigger 차이

by 꾸압 2022. 11. 21.

 

<의문>

  3가지 모두 '호출' 이란 의미로 쓰인다.

  찾아보고 물어보니 개발자들은 딱히 의미 구분없이 '호출' 개념으로 쓰기에 모호했다. (차이라고 해봐야 직접&간접 차이)

  명확하게 정의해보자

 


 

<설명>

[Invoke]

Execution을 위해 
    완전 Bound 된 argument로 
    	함수 예약하는데 필요한 
        	Process

  - Argument를 Stack에 Push하고 PC를 new address로 전송하여 Msg, Object, Function, Thunk 등을 나중을 위한 실행 혹은 여러 RPC System을 위해 Queue 에 넣음.

  - Method 간접 호출. 다른 곳에 Reference를 유지한 후 간접 호출.

 

  [아래 좋은 예시]

<직접 호출 예시>
fn(); // I'm calling it

<간접 호출 예시>
fn.call(); // I'm calling it
fn.apply(); // I'm calling it

 


 

[Call]

함수를 완전 적용 후
    호출하는 
    	결합된 Process

  - Method 직접 호출

 


 

[Trigger]

특정 이벤트 발생시
    Method가 실행됨

  - Method 조건부 호출

 

<이해를 위한 예시>
DB에서 Member 테이블에 INSERT 할 때 Table log를 기록하는 Procedure를 실행하고 싶다면?

Member 테이블의 INSERT에 대한 Trigger로 해당 Procedure를 지정

 


 

<출처 1> https://stackoverflow.com/questions/18505422/whats-the-difference-between-call-and-invoke

<출처 2> https://okky.kr/articles/260188

<출처 3> https://doqtqu.tistory.com/324

 

 

'Programing > Knowledge' 카테고리의 다른 글

[CS] Computation  (0) 2022.11.24
[CS] Lazy Evaluation  (0) 2022.11.23
[CS] Transparancy  (0) 2022.11.19
[Knowledge] Procedure 의미  (0) 2022.11.17

댓글