고루틴
-
golang: 고루틴(Goroutine) 연습해보기 초급편Back-End/Golang 2024. 11. 23. 14:58
고루틴 학습 교과서: Go로 배우는 동시성 프로그래밍서문Go 언어의 핵심인 고루틴은 경량 스레드로, 효율적이고 강력한 동시성 프로그래밍을 가능하게 합니다. 이 교과서는 고루틴의 기초부터 심화된 패턴까지 체계적으로 학습할 수 있도록 설계되었습니다. 각 단계별로 학습 포인트와 실습 예제를 통해 실력을 점진적으로 향상시킬 수 있습니다.1단계: 고루틴 기초학습 포인트고루틴의 정의 및 기본 사용법동기 실행과 비동기 실행의 차이점설명고루틴은 go 키워드를 사용하여 비동기로 함수를 실행할 수 있는 Go의 기본 단위입니다. OS 스레드와 비교해 메모리 오버헤드가 작으며, 런타임 스케줄러가 고루틴을 관리합니다.예제package mainimport ( "fmt" "time")func printMessage(msg stri..
-
라이브락(Livelock)이란?Computer Science/OS 2024. 4. 4. 21:59
1. 라이브락이란?🤷♂️ 라이브락은 무엇인가요?라이브락(Livelock) 은 데드락처럼 시스템이 진행되지 못하는 상태이지만, 프로세스들이 계속해서 상태를 바꾸며 활동은 하고 있는 상태를 말합니다.즉,데드락: 아예 멈춤 (가만히 기다림)라이브락: 계속 움직이지만 아무것도 못함 (헛돌기)🍽️ 현실 비유로 이해하기두 사람이 좁은 복도에서 서로 마주쳤다고 해보세요.A가 오른쪽으로 비킴동시에 B도 오른쪽으로 비킴다시 둘 다 왼쪽으로 비킴또다시 오른쪽으로…계속 피하려 하지만, 서로 계속 겹치면서 아무도 앞으로 가지 못함이게 바로 라이브락이에요. 🔁 데드락 vs 라이브락2. 라이브락 예시코드 구현에 앞서라이브락을 명확히 보여주는 코드 예시는 데드락보다 구현하기 어렵습니다. 라이브락의 상황을 설명하기 위해, 두..
-
golang: 컨텍스트(Context)란?Back-End/Golang 2024. 3. 30. 12:13
Go 언어에서 context 패키지는 고루틴 간에 데이터, 취소 신호, 타임아웃 등을 전파하는 데 사용됩니다. context.Context 인터페이스는 요청 처리에 필요한 모든 정보를 담고, 고루틴의 실행 제어를 가능하게 합니다. 이는 주로 API 호출, 데이터베이스 요청 등의 작업을 취소하거나, 작업의 마감 시간(deadlines)을 설정하고, 요청 스코프의 값(value)을 전달하는 데 유용합니다. Context의 주요 사용 사례: 요청 취소: 사용자 요청 취소나 타임아웃 시, 모든 관련된 작업을 중단시킵니다. 타임아웃 설정: 특정 작업에 대한 최대 실행 시간을 지정합니다. 값 전달: 요청 스코프에 있는 데이터를 여러 고루틴 사이에서 전달합니다. Context 사용 예제: 아래 예제에서는 contex..
-
golang: 고루틴(Goroutines)이란?Back-End/Golang 2024. 3. 30. 12:02
고루틴(Goroutines)은 Go 언어에서 동시성(concurrency)을 구현하는 핵심적인 부분입니다. 간단히 말하자면, 고루틴은 Go에서 실행되는 경량 스레드(lightweight threads)와 유사합니다. 하지만 전통적인 스레드에 비해 훨씬 적은 메모리를 사용하며, 쉽게 수천 개 이상을 생성하고 관리할 수 있습니다. 고루틴은 Go 런타임에 의해 관리되며, 고루틴 사이의 통신은 주로 채널(Channels)을 통해 이루어집니다. 고루틴의 특징: 경량: 고루틴은 매우 작은 메모리 스택을 사용하여 시작되며, 필요에 따라 동적으로 확장됩니다. 비동기 실행: 고루틴은 비동기적으로 실행됩니다. 즉, 메인 프로그램의 실행을 차단하지 않고 동시에 실행될 수 있습니다. 쉬운 생성: go 키워드를 사용하여 함수 ..