Version: Unity 6.0 (6000.0)
언어 : 한국어
잡 시스템
잡 개요

잡 시스템 개요

Unity의 잡 시스템을 사용하면 멀티스레드 코드를 생성할 수 있으므로 애플리케이션이 사용 가능한 모든 CPU 코어를 사용하여 코드를 실행할 수 있습니다. 이는 애플리케이션이 하나의 CPU 코어에서 모든 코드를 실행하는 대신 실행 중인 모든 CPU 코어의 용량을 더 효율적으로 사용하므로 성능이 향상됩니다.

잡 시스템 자체를 사용할 수 있지만, 성능을 향상시키려면 Unity의 잡 시스템의 잡을 컴파일하기 위해 특별히 설계된 버스트 컴파일러도 사용해야 합니다. 버스트 컴파일러는 코드 생성을 개선하여 모바일 기기의 성능을 향상하고 배터리 사용량을 줄입니다.

또한 Unity의 엔티티 컴포넌트 시스템과 함께 잡 시스템을 사용하여 고성능 데이터 지향 코드를 생성할 수도 있습니다.

멀티스레딩

Unity는 자체 네이티브 잡 시스템을 사용하여 애플리케이션이 실행되는 기기에서 사용할 수 있는 CPU 코어 수에 따라 여러 개의 워커 스레드를 통해 자체 네이티브 코드를 처리합니다. 일반적으로 Unity는 프로그램 시작 시 기본적으로 실행되는 하나의 스레드(메인 스레드)에서 코드를 실행합니다. 하지만 잡 시스템을 사용할 때 Unity는 워커 스레드에서 코드를 실행하며, 이를 멀티스레딩이라고 합니다.

멀티스레딩은 여러 코어에서 동시에 여러 개의 스레드를 처리할 수 있는 CPU 기능을 활용합니다. 작업이나 명령어가 차례로 실행되지 않고 동시에 실행됩니다. 워커 스레드는 서로 병렬로 실행되고 완료되면 메인 스레드 결과를 동기화합니다.

잡 시스템은 CPU 코어 용량과 일치하는 스레드가 충분히 있는지만 확인합니다. 즉 사용 가능한 CPU 코어 수를 정확히 알 필요 없이 필요한 만큼 작업을 예약할 수 있습니다. 이는 CPU 코어보다 더 많은 스레드를 비효율적으로 생성하기 쉬운 스레드 풀링 같은 기술을 사용하는 다른 작업 시스템과 다릅니다.

작업 훔치기

잡 시스템은 예약 전략의 일부로 작업 훔치기를 사용하여 워커 스레드 간에 공유되는 작업의 양을 균등하게 합니다. 워커 스레드는 다른 워커 스레드보다 작업을 더 빨리 처리할 수 있으므로 워커 스레드가 모든 작업 처리를 마치면 다른 워커 스레드의 대기열을 살펴본 다음, 다른 워커 스레드에 할당된 작업을 처리합니다.

안전 시스템

잡 시스템에는 멀티스레드 코드를 더 쉽게 작성할 수 있도록 모든 잠재적인 경쟁 상태를 감지하고 그로 인해 발생할 수 있는 버그를 차단하는 안전 시스템이 있습니다. 경쟁 상태는 한 작업의 결과가 제어할 수 없는 다른 프로세스의 타이밍에 따라 달라질 때 발생합니다.

예를 들어, 잡 시스템이 메인 스레드의 코드에서 데이터에 대한 레퍼런스를 잡으로 보내는 경우, 잡이 데이터를 쓰는 동시에 메인 스레드가 데이터를 읽고 있는지 확인할 수 없습니다. 이러한 시나리오는 경쟁 상태를 초래합니다.

이 문제를 해결하기 위해 잡 시스템은 각 잡에 메인 스레드의 데이터 레퍼런스가 아닌 작업에 필요한 데이터의 사본을 보냅니다. 이 사본은 데이터를 격리하여 경쟁 상태를 제거합니다.

잡 시스템이 데이터를 복사하는 방식은 잡이 블리터블 데이터 유형에만 액세스할 수 있음을 의미합니다. 이러한 유형은 관리되는 코드와 네이티브 코드 간에 전달될 때 전환이 필요하지 않습니다.

잡 시스템은 memcpy를 사용하여 블리터블 유형을 복사하고 Unity의 관리되는 부분과 네이티브 부분 간에 데이터를 전송합니다. 잡을 예약할 때 memcpy를 사용하여 데이터를 네이티브 메모리에 넣고 잡을 실행할 때 관리되는 측에서 해당 사본에 대한 액세스를 제공합니다. 자세한 내용은 잡 예약을 참조하십시오.

Collections 패키지

코어 Unity 엔진에서 제공하는 잡 시스템 외에도 Collections 패키지는 많은 잡 유형네이티브 컨테이너를 확장합니다. 자세한 내용은 Collections 기술 자료를 참조하십시오.

추가 리소스

잡 시스템
잡 개요
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961