강의

멘토링

커뮤니티

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

dyl님의 프로필 이미지
dyl

작성한 질문수

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

채팅 테스트 #1

string 은 멀티스레드에서 변경시 안전한가요?

작성

·

403

0

c# 에서 string 은 멀티스레드에서 변경시 안전한가요?

또는 멤버에 대입 했을때도 안전한가요?

값 타입이고 immutable 이라 동기화 처리를 따로 해주지 않아도 괜찮은건가요?

 

 

 

답변 1

0

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

읽기만 하는 데이터는 아무리 멀티 쓰레드 환경이라고 해도 문제가 없습니다.

dyl님의 프로필 이미지
dyl
질문자

읽기는 괜찮은걸로 알고 있긴한데 쓰기에 대해서 의문이 좀 있어서요

만약 string abc; 가 전역변수이고
fn 이란 함수 를 멀티스레드로 돌리고 있는데 이때 fn 함수에서 abc+="ccc";

를 더한다고 하면 이건 동기화 처리 없이도 안전한가요?
아니면 lock 으로 동기화 처리를 해줘야 하나요?

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

그런 경우라면 물론 lock을 걸어줘야 합니다.
사실 특별히 LockFree라고 명시된 경우가 아니라면 기본적으로 ThreadSafe하지 않습니다.

dyl님의 프로필 이미지
dyl
질문자

답변 감사합니다!

dyl님의 프로필 이미지
dyl

작성한 질문수

질문하기