WaitGroup.Done에는 포인터를 사용하고 WaitGroup.Add 및 WaitGroup.Wait에는 포인터를 사용하지 않는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-20 00:28:02
원래의
764명이 탐색했습니다.

Why Use a Pointer for WaitGroup.Done but Not for WaitGroup.Add and WaitGroup.Wait?

WaitGroups 참조의 포인터 및 변수

동기화 패키지에서 Add, Done 및 Wait 함수는 모두 WaitGroup에 대한 포인터에 의해 호출됩니다.

  • 추가는 지정된 델타만큼 대기 횟수를 증가시킵니다.
  • 완료 대기 횟수가 감소합니다.
  • 대기 횟수가 0이 될 때까지 대기합니다.

제공된 코드 조각에서 Done 함수는 포인터 변수를 사용하여 호출되고 Add 및 Wait 함수는 변수(포인터가 아님)를 사용하여 호출됩니다.

단, 세 가지 함수는 모두 동일한 WaitGroup에서 호출됩니다.

  • wg 변수는 sync.WaitGroup의 값으로 선언되지만 Add , Done 및 Wait 메소드는 역참조 연산자를 사용하여 wg(wg)의 주소에서 호출됩니다. ().
  • 이는 세 가지 함수가 모두 동일한 기본 WaitGroup 값에서 작동한다는 것을 의미합니다.
  • 유일한 차이점은 Done이 wg의 주소에서 호출되어 다음 작업이 수행되는지 확인한다는 것입니다. 올바른 WaitGroup 값이 수정되고 있습니다.

위 내용은 WaitGroup.Done에는 포인터를 사용하고 WaitGroup.Add 및 WaitGroup.Wait에는 포인터를 사용하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿