상대적인 순서를 설정하는 등의 잠금 또는 통신 채널 등의 동기화 메커니즘을 사용한다.

https://golang.org/ref/mem#tmp_6

 

Goroutine 파괴

goroutine의 종료는 프로그램의 모든 이벤트 전에 발생하는 보장 할 수 없습니다. 예를 들어,이 프로그램 :

VAR 문자열 

FUNC의 안녕 () { 
	이동 FUNC () {A = "안녕하세요"} () 
	인쇄 (A) 
}

에 할당  a 어떤 동기화 이벤트가 따르지는, 그래서는 다른 goroutine 관찰 할 수 보장 할 수 없습니다. 사실, 공격적인 컴파일러는 전체 삭제 될 수 있습니다  go 문을.

goroutine의 영향이 다른 goroutine 관찰해야하는 경우, 이러한 상대적인 순서를 설정하기 위해 잠금 채널이나 통신 등의 동기기구를 사용한다.

채널 통신

채널 통신 goroutines 간의 동기화의 주요 방법이다. 특정 채널에 대한 각각의 전송은 일반적으로 다른 goroutine에서 해당 채널로 수신 한 대응이 일치한다.

추천

출처www.cnblogs.com/yuanjiangw/p/12209743.html