? parent에 2 개의 thread가 포함되는 경우는 어떻게됩니까? 자식도 2 개의 스레드를 얻을 것입니까? 어떻게 fork가 스레드로부터 안전 할 수 있습니까? Wikipedia에서스레드와 교착 상태에 관한 몇 가지 질문은 부모 프로세스가 리소스를 사용하고 자식 프로세스도 동일한 리소스를 사용하는 경우 프로세스와 자식 프로세스가 교착 상태가됩니까?
1
A
답변
2
한 문장의 설명을
교착 상태는 두 개 이상의 경쟁 행동은 각 따라서도 지금까지 수행하는 다른 완료 될 때까지 기다리고, 그리고되는 상황이다.
가장 간단한 경우는 두 개의 스레드와 두 개의 자원입니다.
스레드 A :
acquireResource(r1)
acquireResource(r2)
// Do stuff
releaseResource(r1)
releaseResource(r2)
스레드 B : 다음과 같은 일련의 이벤트가 발생하면
acquireResrouce(r2)
acquireResource(r1)
// Do stuff
releaseResource(r1)
releaseResource(r2)
이 코드 교착 상태가 발생한다.
- 스레드 A가 B를
- 스레드 B가 스레드 R1 내지
- 컨텍스트 스위치를 취득하고이를 R2가 이미 소유하고 있기 때문에 진행할 수없는 점 실 (A)에서 R2
를 취득하고, 스레드 B는 수 r1이 소유되어 있기 때문에 진행하지 마십시오. 그러므로 어느 스레드도 자원을 해제 할 수있는 지점으로 진행할 수 없습니다. 이것은 교착 상태입니다.
코드를 통해 동일한 순서로 리소스를 확보하면 이처럼 간단한 경우를 피할 수 있습니다. 예를 들어, 스레드 B가 r1을 먼저 얻은 경우 교착 상태가 발생하지 않습니다. 교착 상태를 극복하는 데는 여러 가지 방법이 있지만 피하기가 훨씬 더 어렵습니다.
관련 문제
- 1. 자식 프로세스가 파일에 쓰기
- 2. 정상적으로 Java 자식 프로세스가 생성되었습니다.
- 3. 루비에 의해 생성 된 자식 프로세스가 사용하는 CPU
- 4. 자식 프로세스가 실행중인 경우 부모 프로세스는 어떻게 완료됩니까?
- 5. fork() 자식 프로세스와 부모 프로세스
- 6. 자식 프로세스와 부모 프로세스를 동시에 실행하는 방법
- 7. Android가 교착 상태에 있음
- 8. Node.JS로 자식 프로세스가 죽지 않는다
- 9. 악명 높은 아파치 오류 "부모 : 자식 프로세스가 상태 3221225477로 종료되었습니다."
- 10. GTK의 스레드와 교착 상태 문제
- 11. 자식 프로세스가 부모 프로세스에서 메모리를 수정할 수 있습니까?
- 12. 부모 - 자식 프로세스
- 13. ORA-00060 : 리소스를 기다리는 중 교착 상태가 감지되었습니다.
- 14. 자식 프로세스가 코어 파일을 생성하지 않음
- 15. 몇 가지 질문은 autofac
- 16. .NET에서 부모 프로세스와 자식 프로세스 간의 IPC 권장 사항은 무엇입니까?
- 17. 자식 개체에서 부모 참조하기
- 18. Sun 자습서의 교착 상태에 대한 질문
- 19. 자식 프로세스가 나중에 소유 한 상속 된 핸들을 닫아야합니까?
- 20. C에서 부모 프로세스와 자식 프로세스간에 데이터를 반대로 보내기
- 21. 자식 컨트롤이 동일한 이름의 부모 속성을 상속합니까
- 22. 자식 당신은 몇 가지 의심스러운 패치 라인
- 23. Thread.sleep()이 호출 될 때 자식 프로세스가 중지됩니다 (Windows의 Java에서)
- 24. 큰 테이블 부모 - 자식
- 25. 자식 존재하는 경우 부모 삭제를 중지하는 방법
- 26. 내가 자식-CVS를 사용하고 자식-CVS
- 27. 이 경우 리소스를 공개해야합니까?
- 28. C 자식 읽기 "리소스를 일시적으로 사용할 수 없음"
- 29. 부모 자식 창에 새 JSP 팝업 자식 자식 페이지 닫기
- 30. 파이썬에서 부모 프로세스와 분기 된 자식 프로세스간에 데이터를 어떻게 공유합니까?
정말 말하기가 어렵습니다. 매우 구체적인 질문과 단일 리소스 및 하나의 공유 시나리오를 묻는 것이 어떻습니까? 일부 리소스는 공유 할 수 있습니다. 몇몇은 할 수 없다. 일부는 몇 가지 방법으로 공유 할 수 있지만 다른 것은 공유 할 수 없습니다. 예를 들어, 메모리는 일반적으로 읽을 수는 있지만 동기화 없이는 동시에 쓰지는 못합니다. CPU는 운영 체제에 의해 조정됩니다. – WhirlWind
또한 질문에 대한 귀중한 답변을 받았다고 믿는다면, 당신을 도우려는 사람들에게 보상 할 수있는 훌륭한 대답을 받아 들일 수 있습니다. – WhirlWind