Skip to main content

Tag: 동시성

[Javascript] async/await 알아보기 (w. V8 Engine, task, microtask)

서론 CS 스터디에서 9월 10일에 발표한 async function과 await 키워드에 대해 정리한 문서를 블로그에 공유하고자 한다. async function - await는 어떻게 동작할까? async/await란? async function이란, 여러 Promise간의 흐름을 순서대로 처리할 수 있는, 즉 여러 비동기 함수들을 동기적인 순서로 진행할 수 있는 함수를 말합니다. async function은 0개 이상의 await 키워드를 포함할 수 있는데, 함수를 진행하다 await가 달린 Promise를 만나게 되면 해당 Promise가 이행/거부될 때 까지 함수 실행을 일시 중단 하며 처리가 완료된 뒤 다시 진행됩니다.

[Java] synchronized 알아보기

서론 CS 스터디에서 3월 6일 발표한 synchronized에 대해 정리한 문서를 블로그에 공유하고자 한다. synchronized 키워드란? 멀티 스레드 환경에서 Java 언어가 공유 자원에 대한 동기화 처리를 위해 사용되는 관용구(idiom)입니다. 이 키워드를 사용해 개발자는 간단하게 경쟁 조건(Race Condition) 을 피할 수 있습니다. Synchronized 키워드를 사용하게 되면 Java는 내부적으로 모니터(monitor)(모니터 락(monitor lock) 또는 내재적 락(intrinsic lock)이라고도 불림)을 사용해 동기화를 처리합니다. 모니터는 동기화에 필요한 ‘객체 상태에 대한 배타적 액세스 강제’, ‘가시성(visibility)에 필수적인 발생-전(happen-before) 관계 설정’ 과 같은 작업을 수행하는 역할을 합니다.

[DB] DB Locking 알아보기

서론 CS 스터디에서 2월 20일에 발표한 DB Locking에 대해 정리한 문서를 블로그에 공유하고자 한다. DB Locking이란? 병행 트랜잭션이 가능한 환경에서, 변경중인 record를 다른 transaction들이 접근하지 못하도록 막음으로써, 병행 수행 문제를 해결하려는 접근 방법입니다. 이러한 Locking을 위한 규약(Protocol)으로는 Shared Locking Protocol, 2PLP(2-Phase Locking Protocol), Multiple Granularity Locking Protocol 이 있습니다. 병행 트랜잭션(Concurrent Transaction) 이란? 동시에 실행되고 있는 둘 이상의 트랜잭션을 의미합니다. 병행 트랜잭션의 장점 DB의 공용도(Sharability) 제고 응답시간(Response Time) 단축 시스템 활용도(System Utilization) 증대 병행 트랜잭션의 동시성 문제 병행 트랜잭션의 병행 수행률이 상승할수록, 아래와 같은 병행 문제들의 발생률도 상승합니다.