SlideShare a Scribd company logo
Concurrency
programming
concurrency를 어떻게 해결을 할 수 있을까?
윤재진
CPU변화
http://www.math.pku.edu.cn/teachers/qiuzy/plan/lits/images/concurrency.gif
Parallel & Concurrency
What is the concurrency?
http://image.slidesharecdn.com/threadsactors-111001130121-phpapp02/95/actors-and-
threads-5-728.jpg?cb=1317558832
What is the concurrency?
• 병렬 프로그래밍
• 병렬프로그래밍은 하나의 프로그램이 동시에 여러일 수항게 만드는 방법을 통칭
• 병렬 프로그래밍은 성능 향상을 목적으로 명시적으로 멀티 프로세서를 사용함
• e1 + e2를 계산할때 e1과 e2를 각각의 프로세서에서 실행을 하던 하나의 프로세서에서 실행을 하던
겉으로 보이는 결과는 반드시 같아야 한다.
• 동시성프로그램
• 병렬 프로그래밍이라는 말은 고성능 컴퓨팅(HPC, High Performance Computing)의 한 분야를 지칭
하는 좁은 뜻으로도 사용되기 때문에 혼돈을 피하기 위해 동시 프로그래밍(concurrent
programming)이라는 말을 쓰기도 한다.
• 동시성 자체가 명세에 포함되는 개념
• 프로그램이 여러개의 동시적인 쓰레드로 실행이 되고 따라서 결과가 비결정적
http://skyul.tistory.com/327
Concurrency is not parallelism
• Concurreny가 parallelism이 될 수도 있지만 parallelism
은 아니다.
• 한프로세서에서 프로그램을 돌릴때 concurrent할게 할
수 있지만 이게 parallel은 아니다.
• 하지만 잘 만들어진 concurrent program는 parallel한
multiprocessor를 효율적으로 이용할 수 있다.
http://talks.golang.org/2012/concurrency.slide#7
규모가변성
• 코어의 수를 늘렸을 때 프로그램의 성능 향상이 일어나는 정도를 말
한다.
• 코어가 2배가 되었을 때 프로그램 성능이 2배가 된다면 규모가변성이
매우 뛰어난 병렬 프로그래밍
• 코어가 2배가 되었음에도 성능 향상이 미미하다면 규모가변성이 떨
어지는 프로그램
• 예를 들면 데크는 학부수준의 프로그램입니다.
• 하지만, 규모가변성이 보장되면서 쓰레드 세이프한 데크 작성은 논문
으로 낼 수준이 된다.
http://skyul.tistory.com/327
그렇다면
concurrency 프로그래밍은
어떻게 할까?
Concurrency 프로그래밍 방법
• Lock Condition
• Actor
• Communicating sequential process
• STM
Lock Condition
http://www.certpal.com/blogs/2009/10/java-thread-tutorial/
Lock Condition
• concurreny 프로그래밍의 가장 기본적인 방법입니다.
• synchronized
synchonized
Lock Condition
• concurreny 프로그래밍의 가장 기본적인 방법입니다.
• synchronized
• volatile
volatile
volatile
http://tutorials.jenkov.com/java-concurrency/volatile.html
volatile은 언제 쓰나?
• 두개의 thread가 동시에 read write를 하는 경우엔 적합
하지 않다.
• 한 thread는 항상 읽기 쓰기만 하고 나머지 thread는 읽
기만 할 경우엔 항상 최신값을 읽는것을 보장한다.
• volatile을 쓰지 않은 경우에는 보장 되지 않는다.
• volatile로 main memory에 직접 접근을 하기 때문에 정
말 보여주는게 필요할때만 사용하는게 좋다. 그렇지 않으
면 속도 저하를 가져온다.
Lock Condition
• concurreny 프로그래밍의 가장 기본적인 방법입니다.
• synchronized
• volatile
• Lock Condition
• AtomicInteger … , Reentrance Lock, CycleBarrier …
compare and swap
Atomic
Lock
Lock Condition
• concurreny 프로그래밍의 가장 기본적인 방법입니다.
• synchronized
• volatile
• Lock Condition
• AtomicInteger … , Reentrance Lock, CycleBarrier …
• concurrency hazard
Concurrency hazard
• Dead Lock
• 락을 정해진 순서와 다르게 획득했을 때 발생한다.
• Live Lock
• 서로에게 응답을 미뤄서 lock은 걸려있지 않지만 진행이 안되는 상
태
• Starvation
• 한 thread가 오래동안 공유 자원을 잡고 있어서 다른 thread는 잡
을 수 없는 상대
Lock Condition
• concurreny 프로그래밍의 가장 기본적인 방법입니다.
• synchronized
• volatile
• Lock Condition
• AtomicInteger … , Reentrance Lock, CycleBarrier …
• concurrency hazard
• Lock Condition은 고성능을 요구할때는 병목이 될수도 있습니다.
http://www.slideshare.net/guynir/the-edge-2012-disruptor-guy-
raz-nir-published
concurreny시 의 병목
http://www.slideshare.net/guynir/the-edge-2012-disruptor-guy-
raz-nir-published
http://www.slideshare.net/guynir/the-edge-2012-disruptor-guy-
raz-nir-published
http://www.slideshare.net/guynir/the-edge-2012-disruptor-guy-
raz-nir-published
http://www.slideshare.net/guynir/the-edge-2012-disruptor-guy-
raz-nir-published
이걸로 개발할 패턴은
없나?
많다
REACTOR
PROACTOR
EVENT-LOOP
Producer
Consumer
Message Passing
여기서 얘기할꺼는
Producer Consumer만.
다른건 잘 모름...
Producer Consumer
http://java.dzone.com/articles/producer-consumer-pattern
Producer Consumer이
확장되면
http://www.michael-noll.com/blog/2013/03/13/running-a-multi-broker-apache-kafka-cluster-on-a-single-node/
actor
• light process (erlang) or thread (scala)
• 쉽게 생각하면 single thread
• thread 간에 shared memory를 두지 않고 분리를 해서 multi thread 환경을
구성함
• 주로 사용하는 언어는 erlang, scala
• 기존과 다른거는 언어차원이나 프레임워크 자원에서 지원함
• 또한 shared memory를 가지고 가지고 가질 않기 때문에 기존 보다 개발이 단
순해짐.
• producer - consumer만 이해하면 가능함.
Actor
https://pragprog.com/book/pb7con/seven-concurrency-models-in-
seven-weeks
Actor
A-Actor
Mailbox
B-Actor
Actor Sample Code
https://pragprog.com/book/pb7con/seven-concurrency-models-in-
seven-weeks
actor applications
supervisor
actors
application
https://pragprog.com/book/jaerlang2/programming-erlang
actor기반 application의
시작순서 in erlang
CSP
• Communicating Sequential Processes
• 주로 사용하는 언어 : clojure core/sync, go
• 사용방법은 actor란 비슷
• ex) message <- “hello”
• actor와 다른점은 actor 는 pid에게 전달을 하지만 csp는
anonymous로 channel로 전달함.
• blocking queue와 비슷한 개념
CSP
B-
Goroutine
channel
D-
Goroutine
C-
Goroutine
A-
Goroutine
channel
…
CSP
https://gobyexample.com/channels
STM
(Software transactional memory)
• a concurrency control mechanism analogous to database
transactions for controlling access to shared memory in
concurrent computing (wikipedia)
• It is an alternative to lock-based synchronization. STM is
strategy implemented in software, rather than as a hardware
component.(wikipedia)
• 대표적인 지원언어 clojure, haskell
• 하지만 자바도 lib로 지원함.
• lock free하다.
mvcc
• clojure가 mvcc 기반으로 개발됨 (haskell은 mvcc모델이
아님)
• 다중 버전 병행 수행 제어는 데이터베이스 관리 시스템
이 일반적으로 사용하는 동시성 제어 방식으로, 데이터베
이스로의 동시 접근을 제공하고 프로그래밍 언어에서 트
랜잭셔널 메모리를 구현한다(wikipedia)
• db에는 다 구현되어 있는 방식
간단한 mvcc example
clojure stm
http://sw1nn.com/blog/2012/04/11/clojure-stm-what-why-how/
clojure stm 원리
http://sw1nn.com/blog/2012/04/11/clojure-stm-what-why-how/
concurreny 프로그래밍에 대한
생각
• java에서는 atomic이나 lock free 알고리즘을 써라
• 아니면 lock free가 되는 프레임워크를 써라.
• https://github.com/LMAX-Exchange/disruptor 추천
• 기본적인 패턴은 producer consumer부터 생각해보자
• 다른 패턴은 상황에 맞게 생각을 해보자.
• 다른 언어도 가능하다면 잘 이해하고 쓰는것도 나쁘지 않다.
참고자료
http://tutorials.jenkov.com/java-concurrency/non-blocking-
algorithms.html#blocking-concurrency-algorithms
http://docs.oracle.com/javase/tutorial/essential/concurrency/
starvelive.html
http://stackoverflow.com/questions/1036364/good-example-of-
livelock
https://richardbarabe.wordpress.com/2014/02/21/java-deadlock-
livelock-and-lock-starvation-examples/
http://skyul.tistory.com/327

More Related Content

What's hot

초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
Inseok Lee
 
[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기
NAVER D2
 
내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015
Lim SungHyun
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
devCAT Studio, NEXON
 
Stash 사용자 교육
Stash 사용자 교육Stash 사용자 교육
Stash 사용자 교육
Byeongsu Kang
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
완수 양
 
112 deview
112 deview112 deview
112 deviewNAVER D2
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
devCAT Studio, NEXON
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang
 
Kotlin 을 아시나요?
Kotlin 을 아시나요?Kotlin 을 아시나요?
Kotlin 을 아시나요?
NBT Inc.
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
ukjinkwoun
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
JiHyung Lee
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
Young D
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기
NAVER D2
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
wonmin lee
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
devCAT Studio, NEXON
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
Sungbum Hong
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기
복연 이
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
Lazy Ahasil
 

What's hot (20)

초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기
 
내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015내가써본 nGrinder-SpringCamp 2015
내가써본 nGrinder-SpringCamp 2015
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
Stash 사용자 교육
Stash 사용자 교육Stash 사용자 교육
Stash 사용자 교육
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
 
112 deview
112 deview112 deview
112 deview
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
Kotlin 을 아시나요?
Kotlin 을 아시나요?Kotlin 을 아시나요?
Kotlin 을 아시나요?
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 

Viewers also liked

Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
Steve Min
 
Workshop: Introduction to the Disruptor
Workshop: Introduction to the DisruptorWorkshop: Introduction to the Disruptor
Workshop: Introduction to the Disruptor
Trisha Gee
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
HyeonSeok Choi
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
Trisha Gee
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability흥배 최
 
7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신
Hyunsoo Jung
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
Hyunsoo Jung
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Terry Cho
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
Terry Cho
 

Viewers also liked (9)

Scalable web architecture
Scalable web architectureScalable web architecture
Scalable web architecture
 
Workshop: Introduction to the Disruptor
Workshop: Introduction to the DisruptorWorkshop: Introduction to the Disruptor
Workshop: Introduction to the Disruptor
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
 

Similar to Concurreny programming

함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
CWMin
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
Byeongsu Kang
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr
내훈 정
 
Microsoft pp lpdf
Microsoft pp lpdfMicrosoft pp lpdf
Microsoft pp lpdf
HYUNWOO KIM
 
More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)
경섭 심
 
FP, lazy evaluation
FP, lazy evaluation FP, lazy evaluation
FP, lazy evaluation
성범 홍
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
강 민우
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
Young Soo Kim
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
Seungmo Koo
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
SeungWoo Lee
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
Chanwoong Kim
 
Asynchronous 101 - (1)
Asynchronous 101 - (1)Asynchronous 101 - (1)
Asynchronous 101 - (1)
MinChul Lee
 
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
Woong Seok Kang
 
Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼
Hyounggap An
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
KWON JUNHYEOK
 

Similar to Concurreny programming (20)

함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr
 
Microsoft pp lpdf
Microsoft pp lpdfMicrosoft pp lpdf
Microsoft pp lpdf
 
More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)
 
FP, lazy evaluation
FP, lazy evaluation FP, lazy evaluation
FP, lazy evaluation
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
Asynchronous 101 - (1)
Asynchronous 101 - (1)Asynchronous 101 - (1)
Asynchronous 101 - (1)
 
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
 
Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼Pcl 라이브러리 빌드_튜토리얼
Pcl 라이브러리 빌드_튜토리얼
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
 

Concurreny programming