해결된 질문
작성
·
117
0
_beginthreadEx() 이 친구가 Thread safe하지 않은 함수가 있을 때, 해당 함수들을 문제없게끔(?) 부르도록 Thread를 create하는 것 까지는 이해가 됬는데, 원리가 궁금해집니다.
내부적으로 Lock을 하거나, 임계영역을 설정하는 등의 동기화 기법을 자동으로 하는 건가요?
아니면, 혹시 관련된 자료를 어디서 얻을 수 있을까요.. 구글링을 열심히 해봤지만 관련자료가 안나와서 선장님께 질문드려봅니다.
답변 2
1
멀티스레드에 문제 가능성이 있는 함수라는 것의 기본 특징은 static 선언된 변수를 사용한다는 것에 있습니다. 이 문제를 해결하기 위해 TLS 개념이 이미 나와 있습니다. 생각하시는 원리라는 것은 TLS에 대해서 알아보시면 해결이 되리라 생각합니다.
그리고 스레드 동기화는 별개의 문제입니다. 동기화를 자동으로 해주는 것이 결코 아니오니 유의하시기 바랍니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
제공된 정보 중에는 _beginThreadEx()
함수의 원리나 관련 자료에 대한 직접적인 언급이 없습니다.
_beginThreadEx()
함수는 Windows 프로그래밍에서 사용되는 함수로, 새로운 스레드를 생성할 때 사용됩니다. 이 함수의 원리나, 스레드 안전성(thread safety)과 관련된 구체적인 정보를 얻기 위해서는 Windows의 공식 문서나 관련 전문 서적, 온라인 개발 커뮤니ힰ 혹은 Stack Overflow와 같은 Q&A 사이트를 통해 검색하는 것이 좋습니다.
Lock이나 임계 영역 설정 같은 동기화 기법이 _beginThreadEx()
함수 내부에서 자동으로 처리되는지의 여부는 해당 함수의 구현 세부사항에 달려 있습니다. 따라서 Microsoft의 공식 개발자 문서 또는 C/C++과 관련된 프로그래밍 가이드를 참고하는 것이 좋을 것으로 보입니다.
Kumma님의 질문과 관련된 자세한 정보를 원한다면 Microsoft의 공식 문서나 해당 기술의 담당 커뮤니티에서 더 많은 정보를 얻을 수 있을 것입니다.