35분 06초 질문 있습니다.
207
작성한 질문수 7
복사될때 RefCount가 1증가해서 넘어가기 때문에
사용중에는 삭제되지 않을것이라는 보장이 있다고 말씀해주셨는대
다른 쓰레드가 해당 메모리를 해제하면 삭제가 되는것 아닌가요??
이부분이 잘이해가 안가서 질문드립니다.
다시 말씀드리자면 어떻게 상호배제가 구현되는지 잘 이해가 가지 않습니다.
답변 2
0
다른 쓰레드가 메모리를 해제하면 <<
이 안 됩니다. RefCount는 참조 횟수로
다른 쓰레드에서 참조하고 있으면 절대 0이 되지 않습니다.
통상적인 new / delete처럼 인위적으로 삭제할 수 있는 것이 아니고
꼭 RefCount가 0이 되면 '저절로' 메모리가 해제되는 개념에 가깝습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 여울님.
스마트 포인터를 사용하는 경우, 참조 횟수(RefCount)가 0보다 큰 동안에는 해당 메모리가 해제되지 않는다는 특징이 있습니다. 이는 스마트 포인터가 가리키는 객체가 여러 곳에서 사용되고 있을 때, 참조 횟수가 감소되기 전까지는 객체가 삭제되지 않음을 보장합니다.
다른 쓰레드가 메모리를 해제할 수 있다는 부분에 대해 질문 주셨는데, 스마트 포인터 자체가 이를 방지할 수 있습니다. 다른 쓰레드가 객체를 해제하려고 해도, 참조 횟수가 0이 아니면 객체는 삭제되지 않습니다. 이는 스마트 포인터의 참조 횟수 관리 메커니즘이 자동으로 안전성을 보장하는 원리입니다.
특정한 상황에서는 쓰레드 안전성을 유지하기 위해 뮤텍스 등 추가적인 상호 배제 방법이 필요할 수 있으나, 스마트 포인터 자체는 기본적으로 참조 횟수를 통해 사용 중인 객체가 예기치 않게 삭제되는 것을 방지합니다.
관련 포스트나 강의 내용에서는 스마트 포인터의 내부 동작 원리나 추가적인 구현 방법에 대한 설명이 있을 수 있습니다. 다음 링크들을 참고하시어 더 구체적으로 이해하는 데 도움이 되시길 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Memory Pool에서 오버플로우 질문입니다.
0
63
2
포토폴리오 및 진로 관련하여 고민입니다.
0
112
1
포토폴리오 관련 고민입니다.
0
62
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
82
2
성능 테스트 결과
0
103
2
게임 서버 Stateful, Stateless 진로 고민
0
121
1
WaitOnAddress와 Sleep의 차이 질문
0
83
1
궁금한거 있습니다.
0
82
2
JobTimer 구동 스레드
0
107
2
TryPop() 동작 관련 질문
0
81
1
로드맵 C#서버 C++서버 방향성 질문
0
148
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
73
1
생명주기를 위한 의도적 복사
0
86
2
락프리의 실무에서 사용 질문
0
139
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
101
2
mutex와 sleep 차이점
0
117
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
152
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
96
1
공부법 관련해서
0
183
2
MakeShared 함수 관련
0
114
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
144
2
운영체제관련 질문입니다
0
131
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
117
2
메모리 풀 질문있습니다.
0
124
1





