# concurrency
코루틴 동시성 문제
위 예제에서 100개의 coroutine을 띄우고 각 코루틴은 전달받은 action을 1000번 수행한다.값이 보장되게 하려면 어떻게 해야할까?자바의 volatile 키워드 또는 코틀린의 @Volatile 애노테이션을 변수 선언시 지정할 수 있다. 사전적 의미로는 ‘휘

[iOS] Swift Concurrency(1)
많은 수의 코어를 효율적으로 활동하는데 도움을 준다.동일한 시간에 코어를 하나 이상 사용해서 처리를 빠르게 하고, 중요하지 않은 작업은 중요도가 낮은 스레드에서 실행시킨다.멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 지원해주는 동시성 프로그래밍
Concurrency
https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html 한글 번역

[Synchronization] Semaphore
동기화(synchronization)란 상호 배제와 순서 관계를 고려한다. 자식 Thread가 먼저 실행한 다음 부모 Thread가 실행하는 코드를 구현하려고 한다. 하지만 Thread가 처리되는 순서를 예측할 수 없기 때문에 이를 처리하는 조건이 필요하다. 특정

Redisson 분산락을 이용한 동시성 제어
Redis 클라이언트인 Redisson 분산락(Distributed Lock)을 이용해서 동시성을 제어하는 포스팅을 진행해봤습니다 (예제 포함)

[데이터베이스] 동시성 제어 총정리
Lock-based Protocols, MGL, Deadlock, Phantom Phenomenon, Consistency Level
[번역] Learning Concurrent Reconciling
원문: https://openkruise.io/blog/learning-concurrent-reconciling/ 컨트롤러 관련해서 글을 찾아서 읽어보다가 공유하면 좋을 것 같아 적어봅니다. 저의 개인적인 해석이나 정리, 생략이 포함되어 있습니다.

Swift 동시성 프로그래밍 - 2 (DispatchQueue)
현재 작성중인 게시글입니다. > 'CleanCode' 라는 책을 보면 동시성에 대해 이렇게 설명한다. > > --- > 다음은 동시성과 관련한 일반적인 미신과 오해다. > * 동시성은 항상 성능을 높여준다. > * 동시성을 구현해도 설계는 변하지 않는다. > * 웹

OT
OS는 전체 시스템이 정확하고 효율적으로 동작하게 하는 데에 책임이 있다.모든 자원에 대한 책임을 갖고 syscall이 들어오면 그 자원을 가상화해서 user software에게 제공한다.OS는 resource manager이다.프로그램이 원하는 resource를 OS

[Concurrency] Lock
나의 모든 통장 잔고를 출금하려고 하는 순간 카드사에서 카드 결제를 위해 모든 잔고를 가져간다면 나는 잔고를 출금할 수 없는 상태가 된다. 이런 상황은 병행 프로그래밍 (concurrent programming) 에서 발생하는 문제 중 하나로 interrupt 나 mu
Concurrency
Swift는 Asynchronous하고 Parallel하게 코드를 작성할 수 있는 기능이 내장된 언어이다.프로그램은 한 번에 하나의 동작을 하지만, Asynchronous한 코드는 잠깐 중단되었다가 나중에 실행될 수 있는 코드이다. Asynchronous한 코드는 네트

ThreadLocal
ThreadLocal 은 동시성 문제를 해결하기 위한 클래스로 각 thread 에게 독립적인 공간을 제공한다. 각 thread 는 자신에게 할당된 공간에 get(), set() 으로 값을 조회, 저장할 수 있다.

[Concurrency] Thread
프로세스 내에서 작업 단위로 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위를 thread 라고 한다.프로세스 A 는 1부터 100 까지 더하는 연산을 처리해야한다. 하지만 10개를 더할때마다 I/O 가 발생해 context switching 이 일어난다면 프로세
[Swift] Concurrency Programming - 4
동시성 프로그래밍은 강력한 기능이지만 Race Condition Issue가 발생할 수 있다.위와 같은 예제의 오류가 발생하는 이유는 하나의 자원, 값에 여러 스레드가 접근하여 동시에 작업하기 때문이다.공유 자원에 접근할 수 있는 스레드의 수를 제한할 수 있다.ARC랑
[Swift] Concurrency Programming - 3
DispatchQueue를 초기화 하는 생성자 다음과 같다.디버깅 환경에서 추적하기 위해 작성하는 String 값식별자Quality of Service의 약자로 실행될 Task의 우선 순위를 정해준다.반드시 일이 처리 되는 '순서'를 정해주는 것이 아니라 무엇에 더 '

[Swift] Concurrency Programming - 2
애플이 제공하는 가장 대표적인 동시성 프로그래밍Grand Central Dispatch의 약자로 멀티 코어 환경과 멀티 스레드 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술GCD를 사용하기 위해 Dispatch 프레임워크를 사용하게 되는데 그중에서도