허접하지만 간략하게 코드는 짜보았습니다.
하지만 위의 코드에서는 쓰레드를 생성할 때 CreateThread를 사용함으로써 둘이상의 쓰레드가 하나의 메모리 영역에 접근 할 수 있다는 문제점을 가지고 있습니다. 그래서 CreateThread함수를 대신해서 사용하는 함수가 _beginthreadex함수를 사용합니다.
_beginthreadex 함수는 내부적으로 쓰레드가 생성 될 때 독립적인 메모리 블록을 할당한다는 것입니다.
마찬가지로 내부적으로 CreateThread함수를 호출합니다. 그러면 함수를 바꿔서 소스를 수정하겠습니다.
빨간색 네모 친 부분이 함수를 바꿀 때 신경 써주어야할 부분입니다.
그리고 전 컴파일러를 Visual Studio 2005를 가지고 했는데 여기선
해당 옵션을 주면 굳이 _beginthreadex함수를 쓰지 않아도 됩니다. 하지만 어떠한 환경에서 할지 모르니 애시당초에
_beginthreadex함수를 사용함으로써 위험으로부터 벗어납시다!
※쓰레드를 종료할 때도 _endthreadex를 사용해야 하지만
해당 함수는 return문을 사용하면 자동으로 호출되기 때문에 쓰레드를 종료할 때는 return을 쓰면 된다.
힙 영역 공유를 확인한다고 글을 썼는데.. 쓰다보니 조금 딴대로 길이 새버린거 같습니다.
위 코드로 실험을 해보면 공유가 된다는 것을 알 수 있으니 직접 해보세요 ^^:
'My Study > Programming&Theory' 카테고리의 다른 글
간단한 C코드에서 나는 오류 (0) | 2010.03.05 |
---|---|
DLL 만들어보기 ( Implicit Linking, Explicit Linking ) (2) | 2010.02.12 |
현재 실행 중인 프로세스 찾기 (0) | 2009.12.21 |
메일슬롯을 사용한 프로세스간 채팅프로그램 (0) | 2009.12.08 |
n원 1차 연립 방정식 해 구하기 (7) | 2009.12.07 |