001. Thread Safe

2021. 10. 19. 18:58·사소한 아이의 소소한 스킬/C#

기술 포스팅을 열심히 해보고자...

 

노트북도 집으로 가져왔다...

 

그리하여 첫번째.....

 

Thread Safe먼저 간단하게 해보자......

 

Thread Safe란 Multi-Thread 시 데이터를 동시에 접근할수 없도록 하는  기술.? 기능? 이다.

 

아무튼.. Thread Safe를 하는 방법은 여러가지..

 

Lock을 걸수도 있고 Monitor.enter, Monitor.exit를 사용해도 되고..

 

그중에 간단하게 Task, Await 기능을 이용하여 Thread Safe한 기술을 해보고자 한다

(비동기기능으로써 해당 작업이 종료될때까지 대기타도록 하는 기능)

(Thread Safe라는것이 비동기와 동일하다고 생각해도 될 것 같다. 결국 Lock, Monitor 기능도 해당 Object를 누군가가 사용중일때는 사용이 끝날때까지 대기하라는 것과 동일하다고 판단됨)

 

흔히들 만드는 예제인 은행샘플로 만들어보도록하자.

 

진행해보고자 하는 방법은

 

1000원을 가지고 있는 사람이 100번을 입/출금을 하면서 Thread Safe하게 처리가 되는지 확인 해 볼 것이다.

 

코드는 아래와 같다.

 

아까 말한것과 같이 한개의 계좌에는 1000원이 들어가 있고.. 100번의 행동을 진행한다.

 

1번의 행동에는 각각

 

 

0원 입금, 2원 입금, 3원 출금, 6원 입금, 2원 출금, 1원 출금, 8원 입금, 5원 출금, 11원 입금, 6원 출금

 

최종적으로는 10원 입금!

 

해당 상황에서 Thread Safe하지 않다면 어떠한 값이 나올지 모른다.

 

하지만 Trhead Safe한 상황이라면... 아래와 같이

 

2000원이 계좌에 존재할 것이다 ( 1000 + (10 * 100) 이므로)

 

전체 코드는 아래에!

 

01. ThreadSafe.zip
0.03MB

 

'사소한 아이의 소소한 스킬/C#' 카테고리의 다른 글
  • 003. MVVM 디자인패턴
  • 002. Checked/UnChecked
  • Dictionary 정렬방법
  • 시간 관련 변환 방법
JOOJI
JOOJI
그냥 혼자좋아하는 것들 남기는 블로그....
  • JOOJI
    사소한프로그래머의 소소한행복
    JOOJI
  • 전체
    오늘
    어제
    • 분류 전체보기 (967) N
      • 사소한 아이의 소소한 일상 (247)
      • 사소한 아이의 소소한 먹거리 (44)
      • 사소한 아이의 소소한 정보 (75) N
      • 사소한 아이의 소소한 감사 (4)
      • 사소한 아이의 소소한 운동 (66) N
      • 사소한 아이의 소소한 여행 (40)
        • 2013_전주 (1)
        • 2014_독일 (13)
        • 2014_군산 (1)
        • 2015_제주도 (3)
        • 2015_서울모토쇼 (3)
        • 2015_진해 (1)
        • 2015_전주 (1)
        • 2016_여수 (1)
        • 2020_강릉 (1)
        • 2022_제주도 (4)
      • 사소한 아이의 소소한 강짱 (22)
        • 하트투하트 (10)
        • MAPS (1)
        • 화려한 유혹 (2)
        • 한여름의 추억 (2)
      • 사소한 아이의 TV (50)
        • Drama (9)
        • 예능 (32)
        • 사소한 아이의 다현 (9)
      • 사소한 아이의 소소한 스킬 (130)
        • Scaleform (2)
        • C# (74)
        • QT (3)
        • 알고리즘 (4)
        • Python (21)
        • PyQT5 (9)
        • C_C++ (2)
      • 사소한 아이의 소소한 축구 (283)
        • Korea (25)
        • Germany (45)
        • Bayern Munich (64)
        • Soccer_ETC (75)
        • Euro 2016 (12)
        • 친선경기 (3)
      • 사소한 아이의 소소한 생활정보 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
    • 관리
  • 링크

    • 독일여행
    • 레바티스토리
    • 프라치노 공간
    • 남성패션꿀템 블로그
  • 공지사항

  • 인기 글

  • 태그

    러닝
    뮌헨
    문제
    python
    분데스리가
    바이에른 뮌헨
    회사밥
    WPF
    독일
    c#
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JOOJI
001. Thread Safe
상단으로

티스토리툴바