# DispatchSemaphore

2개의 포스트
post-thumbnail

[Obj-c/Swift] 동기화(Synchronization)

동기화의 필요성 멀티 스레딩 방식으로 동작하는 앱에서는 의도치 않게 여러 스레드가 동시에 리소스를 수정하거나 접근하는 경우가 있다. 이를 동시성 문제라고 한다. 동시성 문제를 해결하기 위해 공유 리소스를 지양하고 스레드 간의 상호 작용을 최소화하는 방법도 있지만 항상 이렇게 설계하는 할 수 만은 없다. 그래서 스레드가 상호 작용해야 하는 경우에는 다음에 소개하는 동기화 방식을 적용하여 리소스에 안전하게 접근할 수 있도록 해보자. 동기화 방식(Obj-c) Atomic Operations 어떤 작업이 실행될 때 항상 완전하게 실행된 후 종료되고, 그렇지 않으면 아예 실행을 하지 않는 것을 말한다. 원자 단위의 작업(Atomic Operation)을 이해하려면 기계어 수준의 실행 명령어를 생각하면 된다. 예를 들어, ADD와 LOAD 명령어 자체는 원자적이어서 두 명령어는 실행 도중에 인터럽트 등에 의해 중단될 수 없다. 따라서 Atomic Operation은

2023년 2월 19일
·
0개의 댓글
·

iOS) Deadlock, Thread Explosion, DispatchSemaphore

개요 운영체제에서 데드락(교착상태)란, 시스템의 여러 곳에서 자원을 사용하려고 할 때(다중 처리 환경), 프로세스가 자원을 얻지 못해 다음을 처리하지 못하는 상태(특정 자원을 무한정 기다리는 상태)이다. 발생원인 상호 배제 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 점유와 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점 이미 할당된 자원을 강제로 빼앗을 수 없다 환형 대기 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다. 해결 방법 예방 발생 가능성을 사전에 제거하도록 시스템 조절. 자원의 상호 배제 조건 방지: 여

2021년 7월 11일
·
0개의 댓글
·