스레드
-
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. 라이브락이란? 라이브락은 프로세스가 '진행 중' 상태이지만 실제로는 어떠한 유용한 작업도 수행하지 않는 상태를 말합니다. 이는 프로세스가 상호작용하는 방식 때문에 발생하며, 특정 조건을 만족시키기 위해 반복적으로 상태를 변경하지만, 결국은 원하는 결과를 달성하지 못하는 경우에 발생합니다. 데드락과 달리, 라이브락 상태의 프로세스는 실행 중인 상태를 유지하지만, 유용한 일을 하지 못합니다. 2. 라이브락 예시코드 구현에 앞서 라이브락을 명확히 보여주는 코드 예시는 데드락보다 구현하기 어렵습니다. 라이브락의 상황을 설명하기 위해, 두 개의 스레드(또는 고루틴)가 서로의 상태 변경을 지속적으로 감지하고, 그에 따라 자신의 상태를 변경하는 예를 들 수 있습니다. 이 과정에서 양쪽 모두 진행을 멈추지 않고 ..