|
다들 알고 있는 걸 괜히 늦게 알아서 쓰는 건지 걱정이된다. 예전 fork() 라는 시스템 콜을 첨 접했을 때, 하필이면 왜 '포크'라는 이름을 가졌을까라는 생각을 했었다. 'fork'를 사전에서 찾아보면[1]:
v.i. 와 같이 나와있다. 우리가 흔히 떠올리는 식기구 '포크'와도 일맥상통하는 뜻이다. 이와 비슷하게, 하나의 프로세스가 둘로 갈라진다는 의미에서 fork라는 이름이 지어진 것이다. fork의 행동 - 자신과 똑같은 프로세스를 복사 - 을 본다면 아주 정확한 작명이라 할 수 있다. 반면에, Win32에서는 fork와 정확히 매칭이 되는 함수가 내가 알기로는 없다. 대신에 직접 프로세스를 '만드는' CreateProcess라는 이름으로 존재한다. 지금 간단히 POSIX pthread 소스를 들여다보고 있는데, 거기서 pthread_join 이라는 함수를 볼 수 있었다. 왜 뜬금없이 'join'이라는 단어가 등장할까라고 생각했다. 찾아보니 이 함수는 특정 스레드가 종료될 때 까지 기다리게 하는 함수인 것이었다. 왜 fork와 join이라는 이름이 지어졌는지가 명확히 이해되는 순간이었다: ![]() 그림처럼 이렇게 갈라지고 다시 합쳐지는 것이다. 굳이 딴지를 걸자면 '합쳐진다'는 개념은 최근 native thread OS에서는 좀 틀렸다고 볼 수 있다. 그러나 과거 thread라는 것이 user level library에서 지원이 되었던 것을 상기하면, 한 프로세스에서 나뉘어졌던 여러 스레드가 본래 프로세스로 돌아간다라고 볼 수도 있으므로 join이라는 단어가 적절한 의미를 가진다고 볼 수 있다. 참고로 Win32의 경우에는 thread handle을 Wait 함수를 이용해서 기다리면 된다. 참고: [1] Excerpted from The American Heritage(r) Dictionary of the English Language, Third Edition (c) 1996 by Houghton Mifflin Company. Electronic version licensed from INSO Corporation; further reproduction and distribution in accordance with the Copyright Law of the United States. All rights reserved.
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04 저도 아들 돌잔치때 돌잡이 .. by 박상욱 at 01/18 미국 대학원 원서 작성중에 p.. by 태클사이야 at 01/13 TO: 박PD 로그인 하지 않아.. by 박응용 at 01/10 http://gigglehd.com/zbx.. by dhunter at 12/28 우와.. 좋네요. 태반이 .. by 윤광배 at 12/17 항상 좋은 글 잘 보고 있습니.. by y2k at 11/23 글이 좋아서 제 블로그에 담.. by 쏭섭 at 11/23 최근 등록된 트랙백
메뉴릿
이글루 파인더
|