프로세스가 많은 개별 스레드에서 MaxMind GeoIP C API을 사용한다고 가정합니다. GeoIP_record_by_addr
에 대한 동시 통화는 안전합니까? 이것이 데이터에 동시에 액세스하는 유일한 프로세스이고 단일 GeoIP 핸들이 사용되고 있다고 가정합니다.MaxMind의 GeoIP C 구현 스레드 안전합니까?
미리 감사드립니다.
프로세스가 많은 개별 스레드에서 MaxMind GeoIP C API을 사용한다고 가정합니다. GeoIP_record_by_addr
에 대한 동시 통화는 안전합니까? 이것이 데이터에 동시에 액세스하는 유일한 프로세스이고 단일 GeoIP 핸들이 사용되고 있다고 가정합니다.MaxMind의 GeoIP C 구현 스레드 안전합니까?
미리 감사드립니다.
MaxMind의 자체 문서에 따르면 GEOIP_CHECK_CACHE 옵션을 사용하지 않으면 스레드로부터 안전합니다. 즉, 라이브러리는 mtime 검사를 통해 디스크의 데이터베이스 업데이트를 확인하지 않습니다.
다른 두 가지 사소한 기능도 GEOIP_CHECK_CACHE에 관계없이 스레드 안전하지 않습니다 :
내 간략한 분석에 다른 문제가 누락 될 수 있지만, 그것은 더 실용적입니다 이럴 중 하나 GeoIP가 핸들을 사용하여 스레드 당하거나 자신의 뮤텍스에 공유 핸들에 대한 모든 액세스를 포장 한 다음 모두 사용할 수 있습니다 기능을 사용하고 mtime 기반의 다시로드 작업을 수행해야합니다.
GeoIP API를 조사 할 시간이 있었으며 데이터베이스의 처리가 스레드로부터 안전함이 나타났습니다. Pread 또는 메모리 액세스.
스레드간에 단일 geoip 핸들을 공유하고 있습니까? – pilcrow
예. 그것을 반영하기 위해 편집 됨. – Sam