특정 조건이 나올 때까지 기다리는 중입니다. 최선의 방법에 대한 조언이 필요합니다. 나는 view
변수로 읽어 파일을 업데이트하고하는 goroutine에서채널 또는 sync.Cond를 사용하여 조건 대기
type view struct {
timeFrameReached bool
Rows []*sitRow
}
:이 (간체)과 같은 구조체가있다. 행 수가 증가하고 궁극적으로 timeFrameReached
은 true
이됩니다.
다른 곳에서, 나는 사실로 다음과 같은 조건을 대기 할 :
view.timeFrameReached == true || len(view.Rows) >= numRows
내가 채널을 배우려고 노력하고 있고 이동의 상태 변수가 어떻게 작동하는지, 나는 최선의 해결책이 여기에 무엇인지 알고 싶습니다 . 이론적으로 나는 다음과 같이 사소한 것을 할 수 있습니다.
그러나 이것은 분명히 순진한 해결책입니다. numRows
의 값은 HTTP 요청에서 나왔으므로 조건 메서드가 어려워 보입니다. goroutine은 찾고있는 행의 수를 알지 못하기 때문에 조건을 브로드 캐스트 할시기를 알 수 없습니다.
좋습니다. 나는 또한 내가 생각해 낸 대안 아이디어를 게시했다. – Josephus
이것이 가능한 해결책이지만, 뮤텍스를 사용하면 결과적으로 확장 할 수 없다는 경험이 있습니다. 캡슐화하기 어려운 상세한 글로벌 지식이 필요할 수 있습니다. goroutines와 채널은 복합 요소를 형성합니다 (이것은 CSP의 핵심 기능입니다). 이와 같은 경우에는 대신이를 사용하려고합니다. –