• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

23.01.04 03:55 작성 조회수 278

0

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

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

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

 

 

 

답변 1

답변을 작성해보세요.

0

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

dyl님의 프로필

dyl

질문자

2023.01.04

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

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

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

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

dyl님의 프로필

dyl

질문자

2023.01.05

답변 감사합니다!