1.golang용 protocol buffer 관련 모듈은 다운로드 받았음 go get -d -u google.golang.org/protobuf go install github.com/golang/protobuf/protoc-gen-go 2. pitaya 샘플 .proto 파일 생성을 시도 했으나, 아래 오류가 발생하면서 빌드 실패함 D:\pitaya>protoc --proto_path=examples\demo\worker\protos --go_out=plugins=grpc:. examples\demo\worker\protos\*.proto protoc-gen-go: unable to determine Go import path for "arg.proto" Please specify either: • a "go_package" option in the .proto source file, or • a "M" argument on the command line. See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information. --go_out: protoc-gen-go: Plugin failed with status code 1. D:\pitaya> stackoverflow 등 참고해도 비슷하지만 다른 내용들 뿐. .proto 파일내에 option go_package = "../protos_gen"; 내용 추가하여 빌드하니 잘됨. 3.기존 소스 -------------------------------- syntax = "proto3"; package protos; message Arg { string msg = 1; } 4.신규 소스 -------------------------------- syntax
원본은 https://laced-river-472.notion.site/Concurrency-in-Go-7f97812aee104adc8cc6d60591f01316 에 요약 해놓음. 2024년 3월 27일 ~ 2024년 3월 29일 Concurrency in go 책 검토 https://github.com/SK-Jin/concurrency-in-go-src 1장 동시성 소개 동시성이 어려운 이유 2장 코드 모델링: 순차적 프로세스간의 통신(CSP) 동시성과 병렬성의 차이 동시성을 지원하는 언어의 장점 Go의 동시성의 철학 3장 동시성 구성요소 goroutine Sync Package Channels select-statement defer-statment 4장 동시성 패턴 제한(Confinement) Ad-hoc 내부적인 규칙, 암묵적인 규칙 등 시간적인 문제로 깨트려지는 경우가 있을 수 있음. lexical 도구에서 문제 상황에 대해 통보, 이를 개선 하는 형태로 접근 동기화를 사용할 수 있다면, 제한을 추구해야 함. 성능을 향상시키고, 개발자의 인지 부하를 줄이기 위함 동기화에는 비용이 들며, 이를 피할 수 있으면, 임계 염역이 없기 때문에 동기화 비용을 지불할 필요가 없음. 동기화로 인해 발생 가능한 모든 문제도 막을 수 있음 for-select 루프 채널에서 반복 변수 보내기 멈추기를 기다리면서 무한히 대기 고루틴 누수 방지 고루틴 작지만 리소스를 필요로 함. 가비지 콜렉터에 의해 수집 되지 않음. -> 원인은 제각각 이겠지만, 여전히 활성화 되어 있을 것이므로 고루틴 종료 조건 작업 완료 복구할 수 없는 에러로 인해 더 이상 작업을 계속할 수 없을 때 작업을 중단하라는 요청을 받았을 떄 -> 네트워크 효과(연관된 고루틴 존제)가 있으므로 제일 중요 접근 1 Cancel chan 생성 하여 기존 for~range