채널을 사용하여 고루틴을 더 빠르게 닫습니다.

WBOY
풀어 주다: 2024-02-06 09:12:04
앞으로
762명이 탐색했습니다.

使用通道更快地关闭 goroutine

질문 내용

GO를 처음 접하는데 채널 신호를 사용하여 고루틴을 중지하는 방법에 대해 질문이 있습니다.

저는 오랫동안 실행되는 고루틴(1000개 이상)과 이를 관리할 관리자가 있습니다:

으아악

이런 경우에는 전화할 때마다 c <- true 管理器都会等待 callClientTask() 完成,然后转到下一个 cancelChannel 나는 모든 고루틴이 callClientTask()(30초 이하)

의 1회 반복으로 중지되기를 원합니다.

내가 시도한 유일한 방법은 다음과 같이 새로운 고루틴을 캐스팅하는 것이었습니다:

으아악

내가 이 일을 제대로 하고 있는 걸까요?


정답


귀하의 질문에서 제가 이해한 한, "callClientTask()의 1회 반복(30초 이하) 내에 모든 고루틴을 중지하고 동기화 질문 없이 작업자 스레드를 동시에 실행하기를 원합니다."

대기그룹과 동시에 실행되도록 코드를 재구성했습니다.

샘플 코드:

으아악

출력:

으아악

편집자:

일부 작업자를 중지하려면 작업자를 업데이트해야 합니다. 다음 코드에는 "중지" 및 "중지" 채널과 시작/중지 기능이 있는 작업자가 포함되어 있습니다.

샘플 코드:

으아악

출력:

으아악

위 내용은 채널을 사용하여 고루틴을 더 빠르게 닫습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!