2014-10-24 11 views
0

멀티 스레딩 방법 : 서로 다른 코어에 스레드를 실행) 병렬 프로세싱을 이용내가 비동기 프로그램을 쓰고 있어요 나는 두 가지 선택이 효과적으로

B를 하나 개의 코어에 스레드를 실행하고 분실)

을 잠재 대기 시간 문제가 있습니다 (코어가 서로 통신해야 함)

더 나은 옵션은 무엇입니까? 나는 그것에 대해 걱정하지 않고 운영 체제를 결정하게하는 것이 더 낫지 않습니까? 아니면 위의 옵션을 사용하여 성능을 향상시킬 수 있습니까?

+0

이런 몰리, 오늘 같은 질문이 뭐야. 그것은 문제에서 문제로, 그리고 심지어는 같은 문제의 인스턴스로 바뀌기 때문에 좋은 일반적인 대답을하는 것은 불가능합니다. – luk32

답변

1

A) 차단 작업이있는 경우 반드시 병렬 처리가 중단되지는 않습니다. 하지만 비동기라고 말하면 차단하지 않을 수도 있습니다. 스레드 스케줄러는 다른 스레드가 차단 중일 때 실행되도록 예약합니다.

B) 이것은 모두 의미가 없습니다. Java에는 스레드 연관 관계가 없기 때문에 선택 사항조차 없습니다. OS는 사용하는 코어를 선택합니다. 스레드간에 통신 할 때 대기 시간은 낮습니다. 최대 100ns가 될 수 있습니다. 이것은 실제로 쓰레드가 서로 통신하는 문제입니다.

비동기 작업을 통해 여러 스레드에서 여전히 성능상의 이점을 볼 수 있습니다. 그래 넌 할수있어.

이 모든 것은 동시성 패턴과 Java에 대해 더 자세히 읽어야한다고 말했습니다. A 또는 B를 잘못 구현하면 성능이 심각해질 수 있으므로 주요 결함을 피하려면 어떤 일이 벌어지고 있는지 자세히 이해해야합니다. Java Concurrency in Practice은 이와 같은 것들을 잘 읽을 수 있습니다.

관련 문제