2010-04-30 5 views
0

멀티 스레딩 기능이있는 클라이언트 서버 응용 프로그램이 있습니다. 서버 측에서 std :: list가 손상되어 SEGV가 생성되지 않습니다. 두 종류의 스레드가 std :: list를 동시에 업데이트하고 손상시키는 원인이되는 크로스 스레드 타이밍 문제가 있다고 의심됩니다.멀티 스레드 부패 버그를 디버그하는 데 도움이되는 무료 도구 또는 전략은 무엇입니까?

이 정보를 추적하거나 도움이 될만한 전략을 제안하십시오.

답변

0

동시 액세스로 인해 손상된 공유 데이터 구조를 알고있는 경우 데이터 구조에 뮤텍스를 넣어 한 번에 하나의 스레드 만 액세스 할 수 있도록 한 다음 다시 시도하십시오.

동시 스레드가 공유 데이터를 업데이트 할 수 없도록해야합니다. 여러 스레드가 읽을 수있는 것은 괜찮습니다. 여러 스레드 읽기와 하나 이상의 쓰기에주의해야합니다.

사용중인 OS 및 컴파일러를 지정할 수 있습니까?

+0

나는 뮤텍스 잠금을 사용하고 있는데, 그 이유는 왜 손상이 발생했는지 혼란 스럽기 때문입니다. 내가 생각하기에 무언가가 행동하지 않아 도구를 추적하여 도움을 받고 싶습니다. g ++ v3.4.6 및 Centos 4를 사용하고 있습니다. – WilliamKF

관련 문제