작성한 질문수
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
채팅 테스트 #1
작성
·
403
0
c# 에서 string 은 멀티스레드에서 변경시 안전한가요?
또는 멤버에 대입 했을때도 안전한가요?
값 타입이고 immutable 이라 동기화 처리를 따로 해주지 않아도 괜찮은건가요?
답변 1
읽기만 하는 데이터는 아무리 멀티 쓰레드 환경이라고 해도 문제가 없습니다.
읽기는 괜찮은걸로 알고 있긴한데 쓰기에 대해서 의문이 좀 있어서요
만약 string abc; 가 전역변수이고fn 이란 함수 를 멀티스레드로 돌리고 있는데 이때 fn 함수에서 abc+="ccc";
를 더한다고 하면 이건 동기화 처리 없이도 안전한가요?아니면 lock 으로 동기화 처리를 해줘야 하나요?
그런 경우라면 물론 lock을 걸어줘야 합니다.사실 특별히 LockFree라고 명시된 경우가 아니라면 기본적으로 ThreadSafe하지 않습니다.
답변 감사합니다!
읽기는 괜찮은걸로 알고 있긴한데 쓰기에 대해서 의문이 좀 있어서요
만약 string abc; 가 전역변수이고
fn 이란 함수 를 멀티스레드로 돌리고 있는데 이때 fn 함수에서 abc+="ccc";
를 더한다고 하면 이건 동기화 처리 없이도 안전한가요?
아니면 lock 으로 동기화 처리를 해줘야 하나요?