• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

23.01.24 09:38 작성 조회수 465

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

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