동시성 3

스칼라 퓨처(Future)와 동시성(Concurrency) - 2

이전 포스트에 이어서 스칼라 Future의 다른 사용법에 대해 살펴보도록 하겠습니다. Future 실패 처리하기 스칼라 Future는 실패한 퓨처를 다룰 수 있는 failed, fallBackTo, recover, recoverWith 메소드를 제공합니다. failed Future[T]에서 실패한 Future를 예외를 저장한 Future[Throwable] 타입의 성공한 Future로 바꿔줍니다. scala> val failure = Future { 42 / 0 } failure: scala.concurrent.Future[Int] = ... scala> failure.value res23: Option[scala.util.Try[Int]] = Some(Failure(java.lang.Arithmetic..

Programming/Scala 2019.08.17

스칼라 퓨처(Future)와 동시성(Concurrency) - 1

오늘 멀티 코어 프로세서가 대중화되면서 동시성에 대한 관심도 많이 늘어났습니다. 이러한 동시성 프로그래밍을 위해서 기존의 프로그래밍 언어들을 블로킹을 사용하여 동기화함으로써 동시성을 지원합니다. 자바의 경우도 마찬가지로 공유 메모리와 락을 기반으로 동시성을 지원하고 있습니다. 그러나 이러한 블로킹을 사용한 동기화의 경우 Deadlock이나 Starvation과 같은 문제가 발생할 수 있습니다. 이렇게 블로킹 기반의 동시성 처리는 이러한 어려움이 있습니다. 그래서 비동기적 프로그래밍을 사용하면 이러한 블로킹을 없앨 수 있습니다. 비동기적(asynchronous) 프로그래밍이란 아래의 그림과 같이 메인 프로그램의 흐름이 있고 이와 독립적으로 실행되는 프로그래밍 스타일을 의미합니다. 스칼라에서는 이러한 비동기..

Programming/Scala 2019.08.16

동시성(Concurrency) vs 병렬성(Parallelism)

서점에 가면 다양한 언어별로 동시성을 다루는 책들을 많이 볼 수 있습니다. 프로그래밍을 하다 보면 이러한 동시성 처리가 필요한 경우가 있습니다. 그런데 동시성이라는 말을 종종 병렬성과 혼동되어 사용하는 경우가 있습니다. 그래서 이번에 한번 정리를 해볼까 합니다. 동시성(Concurrency) vs 병렬성(Parallelism) 동시성병렬성동시에 실행되는 것 같이 보이는 것실제로 동시에 여러 작업이 처리되는 것싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식한번에 많은 것을 처리한번에 많은 일을 처리논리적인 개념물리적인 개념 먼저 동시성과 병렬성의 차이를 표로 살펴보았습니다. 그러나 표로만 봐서는 조금 잘 안 와닿는 ..

반응형