티스토리 뷰

iOS

iOS) thread-safe 와 atomic

hyun99999 2022. 10. 15. 23:18
728x90
반응형
  • thread-safe : 멀티스레드 프로그래밍에서 자원에 스레드가 동시에 접근해도 문제가 생기지 않는 것을 말한다. 즉, 여러 곳에서 접근하더라도 올바른 결과를 얻게된다.
  • atomic : 멀티스레드 프로그래밍에서 데이터의 변경 전과 후에만 자원에 접근할 수 있음을 보장하는 것이다. 즉, 데이터가 변경되고 있는 중에는 접근이 불가능하다.

Swift 는 멀티스레딩(Multi-Threading) 방식입니다.
멀티스레드는 stack 을 제외한 heap, data, code 영역을 공유합니다. 그래서 한 스레드에서 영역을 사용할 때 다른 스레드에서 접근하게 되면 동일한 자원에 두 개 이상의 스레드가 접근하는 경우가 생깁니다. Swift 는 thread-safe 를 보장하는 언어가 아니기 때문에 이때 문제가 생길 수 있습니다. 그리고 프로퍼티가 non-atomic 입니다.
Obejctive-C 에서는 non-atomic 과 atomic 을 설정할 수 있습니다. atomic 으로 설정한 프로퍼티에 접근할 때면 getter 와 setter 에 lock 기능을 제공하게 됩니다.

728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
링크
Total
Today
Yesterday