저는 리눅스에서 일하고 있는데 pthread_rwlock을 사용하고 있습니다. 공유 메모리에 저장되고 여러 프로세스에서 공유됩니다. 이것은 대부분 잘 작동하지만, 잠금 장치가있는 동안 프로세스 (SIGKILL)를 죽이면 잠금 상태가 계속 유지됩니다 (읽기 잠금인지 쓰기 잠금인지 여부는 관계 없음).프로세스 간 pthread_rwlock : 충돌 후 복구?
그런 상태를 인식하고 복구 할 수있는 방법이 있습니까?
저는 리눅스에서 일하고 있는데 pthread_rwlock을 사용하고 있습니다. 공유 메모리에 저장되고 여러 프로세스에서 공유됩니다. 이것은 대부분 잘 작동하지만, 잠금 장치가있는 동안 프로세스 (SIGKILL)를 죽이면 잠금 상태가 계속 유지됩니다 (읽기 잠금인지 쓰기 잠금인지 여부는 관계 없음).프로세스 간 pthread_rwlock : 충돌 후 복구?
그런 상태를 인식하고 복구 할 수있는 방법이 있습니까?
진짜 대답은 적절한 방법으로 프로세스를 중지하는 것입니다. SIGKILL
으로 죽이는 것은 이 아니라입니다.
이 기능은 전화 견고성 (PTHREAD_MUTEX_ROBUST
) 하지만 rwlocks에를 들어, mutexes 지정됩니다. 표준은 그것을 제공하지 않으며 kernel.org는 rwlocks에 대한 페이지조차 가지고 있지 않습니다. 그래서처럼 말했다 : (? 처리 할 수 있습니다 아마도 다른 신호)
@cnicutar를 종료 할 때
모든 사람이 멋지게 연출할 수 있으면 좋지만 강력한 시스템의 경우 시스템이 버그가있는 클라이언트 프로세스에서 중단되지 않도록하고 싶습니다.
필자는 내 솔루션의 견고성을 테스트하기 위해 SIGKILL을 특별히 사용했습니다. – mooware