>  기사  >  백엔드 개발  >  Go에서 SyscallConn()은 언제 일반 *os.File에 유용합니까?

Go에서 SyscallConn()은 언제 일반 *os.File에 유용합니까?

王林
王林앞으로
2024-02-05 23:30:03827검색

在 Go 中,什么时候 SyscallConn() 对常规 *os.File 有用?

질문 내용

SyscallConn() (在 *os.File에 정의된 함수를 사용하는 일부 Go 코드(https://github.com/KarpelesLab/reflink)를 읽고 있습니다.

으아악

이 예에서는 d.Fd()s.Fd()를 직접 사용하는 대신 이러한 Control() 함수를 사용합니다. 장점이 있나요? 보다 일반적으로 func func (*os.File) SyscallConn() (syscall.RawConn, error)는 무엇에 사용됩니까? Control() 函数而不是直接使用 d.Fd()s.Fd() 是否有任何优势?更一般地说, func func (*os.File) SyscallConn() (syscall.RawConn, error) 有什么用?


正确答案


file.Fd() 返回一个文件描述符,并且它使文件描述符以阻塞模式运行(占用一个线程以进行阻塞操作)。 SyscallConn

정답

file.Fd()는 파일 설명자를 반환하고 파일 설명자가 차단 모드에서 실행되도록 합니다(스레드 점유) 차단 작업용). SyscallConn은 이를 수행하지 않습니다. 실제로 파일 설명자를 차단하지 않고 가져오기 위해 특별히 만들어졌습니다. 자세한 내용은 🎜이 질문🎜을 참조하세요. 🎜

위 내용은 Go에서 SyscallConn()은 언제 일반 *os.File에 유용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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