Concurrency

6 posts
Rust tokio::sync: 채널과 동기화 도구 고르기

Rust tokio::sync: 채널과 동기화 도구 고르기

Tokio로 비동기 코드를 짜다 보면 생각보다 빨리 tokio::sync를 만나게 됩니다. 태스크 하나가 다른 태스크에게 일을 넘겨야 하고, 결과를 돌려받아야 하고, 여러 태스크에 종료 신호를 보내야 하고, 공유 상태를 잠가야 하니까요. 문제는 선택지가 꽤 많다는 점입니다. mpsc, oneshot, broadcast, watch, Mutex, RwLock, Semaphore, Notify가 한 모듈 안에 같이 있는데, 이름만 봐서는 언제 무엇을 써야 할지 헷갈립니다. mpsc로도 종료 신호를 보낼 수 있고, watch로도 보낼 수

액터 모델(Actor Model): 메시지로 소통하는 동시성 패러다임

액터 모델(Actor Model): 메시지로 소통하는 동시성 패러다임

멀티스레드 코드를 디버깅하다가 머리를 쥐어뜯어 본 적 있으신가요? 락이 어디서 잡혔다가 풀리는지, 어떤 스레드가 어떤 변수를 먼저 건드렸는지 추적하다 보면 어느새 날이 밝아 있곤 하죠. 사실 동시성 코드가 어려운 건 우리가 못 짠 게 아니라 공유 메모리 모델 자체가 사람의 머리로 추론하기 까다롭기 때문입니다. 그래서 오래전부터 "공유하지 말고 메시지로만 대화하자"는 다른 결의 모델을 제안한 사람들이 있었습니다. 그중에서도 1973년에 제안되어 Erlang과 함께 산업 현장에서 검증된 액터 모델(Actor Model)을 이번 글에서

동기화 (Synchronization)

동기화 (Synchronization)

본 포스팅는 오라클 자바 튜토리얼의 Synchronization와 Thread Interference, Memory Consistency Errors, Synchronized Methods, Intrinsic Locks and Synchronization, Atomic Access를 번역하였습니다. 스레드는 주로 필드들이 가리키고 있는 객체 참조를 공유함으로써 서로 통신합니다. 이는 굉장히 효율적 통신 방법이지만, 스레드 간섭(thread interference)과 메모리 일관성 오류(memory consistency errors)

자바 스레드 Sleep & Intterupt & Join

자바 스레드 Sleep & Intterupt & Join

본 포스팅는 오라클 자바 튜토리얼의 Pausing Execution with Sleep와 Interrupts, Joins, The SimpleThreads Example를 번역하였습니다. Sleep으로 실행 중지하기 Thread.sleep() 메소드는 현재 스레드가 일정 기간동안 실행을 중지시킵니다. 이것은 해당 애플리케이션 또는 시스템 상에서 돌고 있는 다른 애플리케이션 내의 다른 스레드들에게 프로세서를 이용 가능하도록 만들기 위한 효율적인 방법입니다. sleep() 메소드는 다음 예제와 같이 속도 조절을 위해서도 사용될 수 있습

자바 스레드

자바 스레드

본 포스팅는 오라클 자바 튜토리얼의 Thread Objects와 Defining and Starting a Thread를 번역하였습니다. 스레드 객체 모든 스레드는 Thread 클래스의 인스턴스와 관계를 갖습니다. 동시 애플리케이션(concurrent application)을 개발하기 위해서 스레드 객체를 사용하는데는 두 가지 기본 전략이 있습니다. 스레드의 생성과 관리를 직접 제어하기 위해서, 애플리케이션이 비동기 작업이 필요할 때 마다 단순히 Thread 클래스의 인스턴스를 만들 수 있습니다. 응용 프로그램으로 부터 스레드 관리

프로세스와 스레드

프로세스와 스레드

본 포스팅는 오라클 자바 튜토리얼의 Processes and Threads를 번역하였습니다. 동시 프로그래밍(Concurrent Programming)에는 프로세스와 스레드, 이 두가지 기본 실행단위가 있습니다. 자바 프로그래밍 언어에서는 동시 프로그래밍은 주로 스레드와 관련이 있지만 프로세스 또한 중요합니다. 컴퓨터는 보통 여러 개의 활성화된 프로세스와 스레드를 가지고 있습니다. 이것은 심지어 동시에 하나의 스레드 밖에 실제로 처리할 수 없는 싱글 코어를 가진 시스템에서도 마찬가지입니다. 싱글 코어의 처리 시간은 운영체제의 시분활

Discord