-
C# Interlocked.Increment에 대한 고찰닷넷/C# 2023. 7. 20. 10:33반응형
DB에서 인덱스를 자동증가 시키는 칼럼을 만들 수 있는 것처럼 C#에서 하나의 프로퍼티를 자동증가 인덱스로 만든 방법이 없을까 고민해보다가 챗GPT가 알려준 방법인 Interlocked.Increment를 사용했었다.
첫 번째 방법, 생성자에서 초기화
public class Info { // ... existing properties ... private static int currentIndex = 0; public int Index { get; } public Info() { Index = Interlocked.Increment(ref currentIndex); } }
두 번째 방법, 리스트에 추가할 때 인덱스 값 설정
public class Info { // ... existing properties ... private static int currentIndex = 0; public int Index { get; private set; } public static void AddInfo(List<Info> list, Info info) { info.Index = Interlocked.Increment(ref currentIndex); list.Add(info); } }
테스트를 해보았을 때 내가 의도한대로 문제없이 잘 작동되는 코드여서 내 코드에 사용하였는데,
시간이 지나 갑자기 든 의문.
Interlocked는 뭐길래, 이게 무슨 원리로 이렇게 되는 걸까?
int 최대값 안에서 정말 문제없이 작동되는 것일까?
갑자기 순서가 바뀌는 일이 생기지는 않을까?
갑자기 Index가 0이 되는 일은 없을까?
등등
1. 관련 자료 찾기
C# 쓰레드 이야기 - 13. Interlocked, Heap
2. 정리
3. 결론
반응형'닷넷 > C#' 카테고리의 다른 글
NullReferenceException, Null 참조 오류 등 Null 예외 처리에 대한 고찰과 지침서 (1) 2024.07.12 Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법 (0) 2023.07.27 C# 기초지식, 정보 정리 (면접 질문 대비, 꼭 알아야 하는 것) (0) 2023.04.11 C# 시간 계산 두 번 째 (TimeSpan, DateTimeOffset) (0) 2023.04.06 C# JSON 파일 읽기/쓰기 (Deserialize/Serialize) (0) 2023.04.04