>백엔드 개발 >Golang >지연 함수에서 context.WithTimeout 재사용

지연 함수에서 context.WithTimeout 재사용

WBOY
WBOY앞으로
2024-02-09 16:21:211168검색

在延迟函数中重用 context.WithTimeout

지연 함수에서 context.WithTimeout을 재사용하는 것은 시간 초과 작업을 처리할 때 더 나은 제어와 유연성을 제공하는 효과적인 방법입니다. PHP 편집기 Youzi에서 제공하는 context.WithTimeout 함수를 사용하면 함수 실행 중에 시간 초과를 설정할 수 있습니다. 설정된 시간을 초과하면 함수가 자동으로 종료되고 오류 메시지가 반환됩니다. 이 방법을 사용하면 장기적인 기능 차단을 방지하고 프로그램의 안정성과 응답성을 향상시킬 수 있습니다. 동시에 지연 함수에서 context.WithTimeout을 재사용하면 다양한 함수의 시간 제한 제어도 달성할 수 있어 코드가 더욱 간결해지고 유지 관리가 쉬워집니다.

질문 내용

mongodb에 대한 go 빠른 시작 블로그 게시물의 다음 코드 조각(간결성을 위해 축약됨)은 데이터베이스에 연결할 때 context.withtimeout ,并将其重用于延迟的 disconnect 기능을 생성하는데, 이는 문제가 있다고 생각합니다.

으아악

내 생각-

context.withtimeout 생성 시 마감일을 Unix 시간으로 설정하세요. 따라서 시간 제한(즉, 파생된 Unix 시간)이 초과되면 연결 설정 프로세스를 취소하고 싶기 때문에 connect에 전달하는 것이 합리적입니다.

이제 문서에 동일한 ctx 传递给延迟的 disconnect(很可能在将来稍后调用)将导致 ctx 的时间成为过去。意思是,当函数开始执行时它就已经过期了。这不是预期的结果,并且破坏了引用 disconnect 논리를 추가하세요. -

으아악

내가 틀린 부분이나 누락된 부분이 있는지 알려주세요.

Solution

귀하의 이해가 정확합니다.

예제는 단지 데이터베이스에 연결하고 몇 가지 예제 작업(예: 데이터베이스 나열)을 수행한 다음 main()가 끝나기 때문에 예제에서는 충분합니다. 따라서 동일한 컨텍스트로 지연된 연결 해제를 실행해도 문제가 발생하지 않습니다(예제는/ 10초 이내에 제대로 작동해야 합니다.)

"실제" 응용 프로그램에서는 확실히 그렇지 않습니다. 따라서 연결 및 연결 해제에 동일한 컨텍스트를 사용하지 않을 것입니다(해당 컨텍스트가 시간 초과되지 않는 한).

위 내용은 지연 함수에서 context.WithTimeout 재사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제