CRT 이야기


CodeWiz님의 블로그. 역시나 유용한 기사가 많다.

마이크로 소프트웨어 탭에 있는 기사들을 보려고 마음 먹었는데,

PDF로 되어 있는 기사와 DOC로 되어 있는 것이 대부분이라.

간편하게 웹에서 볼 수 있는 걸 찾던 중 CRT이야기가 낙찰(?) 되었다.

역시나 기본적인 내용 - 멀티 스레드, 멀티스레드 DLL에 표가 나와 있었다.

CRT에 왜 싱글 스레드, 멀티 스레드, 멀티 스레드 DLL 버전이 나오게 되었는지 모르는 분들을 위해서 간단히 말씀드리면, 예전에는 싱글 스레드 프로그래밍으로도 충분히 프로그램 제작이 가능하였다.

입출력이 동기화가 되었던 시절(DOS 운영체제를 썼던 그 시절 ㅎㅎ)에는 싱글 스레드로도 충분히 원하는 작업을 할 수 있었다. 그러나 윈도우로 넘어오면서 여러가지 일을 동시에 하고 싶을때 비동기적인 작업을 처리하기 위해서 스레드 프로그래밍이 필요하게 되었고, 이때 문제가 발생했다.

strtok와 같은 함수들은 static변수에 진행에 필요한 값을 저장하는데, 멀티 스레드에서는 스레드 마다 변수가 존재하지 않기 때문에(즉, 여러 스레드가 하나의 변수를 공유해서 쓰기 때문에) strtok와 같은 CRT 함수들을 사용하는데 있어서 치명적인 문제점이 발생하였다.

이 문제를 해결하기 위해서 멀티 스레드, 멀티 스레드 DLL 용 CRT가 나온것으로 알고 있으나, 제가 알고 있는게 틀릴 가능성도 있으므로 맹목적으로 신뢰하지 말아주세요. ㅎㅎ

다시 Codewiz님의 블로그 내용으로 넘어가서 exe와 dll 모듈에서 메모리 할당이 각각 이루어 질 수 있다는 사실은 이번에 처음 알게 되었네요.(왠지 제가 쓴글에 비해서 Codewiz님의 말씀은 100% 믿을 수 있을것 같은 느낌이 들어요 *_*)

바쁘실텐데도 다른 개발자 분들을 위해서 노력해주시는 CodeWiz님께 다시 한번 감사 드립니다.


비주얼 스튜디오 2005에서는 다음과 같이 안정화된 CRT 함수들을 제공한다.
Security-Enhanced Versions of CRT Functions 
http://msdn2.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx

printf Type Field Characters
http://msdn2.microsoft.com/en-us/library/hf4y5e3w(VS.80).aspx

CRT 함수중 _snprintf_s 와 같이 가변인자 파라매터(%s, %c) 문서
2007/07/04 09:03 2007/07/04 09:03

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요

  1. codewiz 2007/07/05 13:27 고유주소 고치기 답하기

    ㅎㅎ^^
    감사합니다.
    doc나 pdf가 별로 불편하지 않다고 생각했는데...
    간단한 글들은 되려 불편할수도 있겠네요.
    doc로 저장된 글 몇 개를 웹에서 바로 볼 수 있도록 했습니다.

    즐거운 하루 보내세요.^^

  2. packpro 2007/07/05 16:52 고유주소 고치기 답하기

    비공개 자료는 보려면 어떻게 하여야 합니까?

  3. packpro 2007/07/05 16:54 고유주소 고치기 답하기

    팁 카테고리에 있는 "[Kill Process] OS이외의 Process 모두 죽이기 " 를 보려고 하는데 비밀번호를 묻는군요. ~~~

  4. TTF 2007/07/07 14:34 고유주소 고치기 답하기

    죄송하지만 비공개 자료는 다른 블로그에서 퍼와서 개인적으로 사용하는 내용입니다. 블로그 이용에 불편을 드려서 정말 죄송합니다.