인프런 커뮤니티 질문&답변

dyl님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

유니티 연동 #4

new List 동기화 와 관련하여..

23.01.24 09:38 작성

·

529

0

public List<IPacket> PopAll()
{

List<IPacket> list = new List<IPacket>();
lock(_lock)
{

...어떤 처리..

}
}

 

이 함수가 멀티 스레드로 실행 된다고 했을대 list 이 변수는 안에가 list 형태인데 linkedlist 같은것도 스레드 세이프 한건가요?

여러개의 스레드가 linkedlist 를 생성만 한다고 했을때(위의 예시처럼 원소 추가나 조작 없이) 동시에 new 연산이 내부에서 실행 된다 여러개 스레드에서 동시에 힙에 new 연산이 실행될것 같은데(예를 들어 c++ vector<> 같은..)

 

멀티스레드로 new 연산시 같은 주소에 생성될 일이 발생할 수도 있지 않을까 해서요

 

질문을 요약하자면
-지역변수에서 힙쪽의 new 를 생성하는게 있다면 그것은 스레드 세이프한가? 라는것이 질문입니다
답변 부탁드려요!

 

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2023. 01. 27. 00:59

네 new는 물론 쓰레드 세이프합니다. C++ C# Java 다 마찬가지에요

dyl님의 프로필 이미지

작성한 질문수

질문하기