코드 실행시 가끔 Attack() 함수에 소요된 시간이 출력되는 경우가 있습니다. 공격이 채널에 쓰고 메인이 이를 읽은 다음 메인이 종료되고 타이머("공격")가 실행될 때까지 기다리지 않으면 경쟁 조건이라는 것을 알고 있습니다
저는 처음 왔습니다 :_)
으아악누군가 이 상황을 처리하는 방법을 알려줄 수 있습니까? 두 기능에 소요된 시간을 인쇄하고 채널을 사용하고 싶습니다.
때 main
退出时,程序将终止,并发 goroutine 不会正常终止(在许多程序中,非主 goroutine 是辅助“守护进程”,根本不会关闭),因此不能保证现有的 defer 会运行。这就是这里发生的情况:当您发送烟雾信号时,如果 attack
goroutine 被取消调度,那么 main 可以在重新调度之前返回,因此 defer
이 실행되지 않습니다.
이 문제를 처리할 수 있는 옵션은 많지만 모두 기본적으로 동일한 결과를 가져옵니다. 기능이 실행된 후에 채널을 보내야 합니다. , 예를 들어(완전하지는 않음)를 통해 이 작업을 수행할 수 있습니다.
위 내용은 달리기 경주 조건의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!