예를 들어, 두 개의 다른 프로세서 코어에서 실행되는 두 개의 다른 스레드를 사용하는 프로그램을 작성하기 위해 멀티 코어 프로세서에서 스레드를 실험하고 싶습니다.
그러나 스레드가 다른 코어에 할당되는 수준은 분명하지 않습니다. 운영 체제 및 프로그래밍 언어 구현에 따라 다음과 같은 시나리오를 상상할 수 있습니다.
- 스레드 할당은 운영 체제에서 관리합니다. 스레드는 OS 시스템 호출을 사용하여 생성되며 프로세스가 멀티 코어 프로세서에서 실행되는 경우 OS는 자동으로 다른 코어에 다른 스레드를 할당 / 예약하려고 시도합니다.
- 스레드 할당은 프로그래밍 언어 구현에 의해 관리됩니다. 스레드를 다른 코어에 할당하려면 특별한 시스템 호출이 필요하지만 프로그래밍 언어 표준 스레드 라이브러리는 해당 언어에 표준 스레드 구현을 사용할 때이를 자동으로 처리합니다.
- 스레드 할당은 명시 적으로 프로그래밍해야합니다. 내 프로그램에서 사용 가능한 코어 수를 감지하고 라이브러리 함수와 같은 다른 코어에 다른 스레드를 할당하기 위해 명시 적 코드를 작성해야합니다.
질문을보다 구체적으로 만들기 위해 Windows 또는 Linux에서 Java 또는 C ++로 멀티 스레드 응용 프로그램을 작성했다고 가정하십시오. 응용 프로그램이 멀티 코어 프로세서에서 실행될 때 여러 코어를 마술처럼보고 사용합니까 (모든 것이 운영 체제 또는 표준 스레드 라이브러리에 의해 관리되기 때문에) 또는 여러 코어를 인식하도록 코드를 수정해야합니까? ?