2017-09-14 1 views
-1

-Interview 질문프로세스에 대한 스레드의 단점은 무엇입니까?

나는 thread의 단점을 요청했다. 그리고 우리는 thread 대신에 process을 사용해서는 안되는 시나리오는 무엇입니까?

어떤 경우에는 은 메모리 액세스가 잘못됨을 제외하고는 많이 생각하지 못했습니다.

+0

[프로세스와 스레드의 차이점은 무엇입니까?] (https://stackoverflow.com/q/200469/62576) –

+0

@KenWhite이 게시물에는 스레드의 긍정적 인 점만 포함되어 있습니다. – roottraveller

+0

스레드에는 많은 장점이 있습니다. 많은 프로그래머가 스레드 된 코드를 올바르게 작성하는 방법을 모르는 것입니다. 교착 상태 및 경주 버그는 진단하고 수정하기가 매우 어렵습니다. 단일 스레드 프로세스의 문제점이 훨씬 적어 메모리를 분리하므로 다른 프로세스의 스레드가 아무 것도 손상시킬 수 없습니다. 이러한 격리는 또한 프로세스를 공동 작업하는 것을 어렵게하지만, 그 일을 처리하면 버그를 진단하고 수정하기가 쉽지 않습니다. –

답변

1

동일한 프로세스에서 생성 된 스레드는 모두 동일한 메모리를 공유합니다. 프로세스는 모두 자신의 메모리 컨텍스트에서 실행됩니다.

리눅스에서 (나는 윈도우에서의 행동이 어떤 것인지 모르겠다.) 새로 생성 된 자식 프로세스는 보통 부모 프로세스의 메모리 컨텍스트의 특정 부분의 사본을 수신하므로 런타임시 메모리가 더 비쌉니다. 생성시 CPU 시간/MMU가 현명합니다. 또한 컨텍스트 스위칭 - (오프) 프로세스를로드하거나 CPU로 프로세스를로드하는 경우 (프로세스 나 스레드가 아무 일도하지 않고 실제 작업이있는 프로세스 나 스레드를 선호하여 큐에 푸시 될 때 발생) - 프로세스.

반면에 프로세스는 메모리가 형제 프로세스의 메모리와 격리되어 있기 때문에 훨씬 안전 할 수 있습니다.

관련 문제