love.thread (한국어)

Available since LÖVE 0.7.0
This module is not supported in earlier versions.

멀티 스레딩을 제공하는 모듈입니다.

스레드는 메인 코드로부터 Lua 환경을 분리해 병렬적으로 실행됩니다. 이로서 메인 코드의 프레임 레이트를 감소시키는 일 없이 복잡한 연산을 효과적으로 수행할 수 있습니다. 그러나 분리된 환경은 메인 스레드의 변수나 함수에 접근할 수 없고, 각 스레드 간 통신 또한 자유롭지 못하기 때문에 각별한 주의가 필요합니다.

LOVE에서 제공하는 객체(또는 유저데이터)들은 모든 스레드에서 공유되기 때문에 이들을 다른 스레드에서 사용하려면 객체 내용을 통째로 복사할 필요가 없이 오직 참조만 전달하면 됩니다. 물론 동시에 여러 스레드에서 같은 객체에 접근할 경우 동기화 관련 문제가 발생할 수 있습니다.

스레드는 시작되면서 love.thread 모듈만을 로드합니다. 다른 모든 모듈은 require선언을 통해 명시적으로 불러서 사용해야 합니다.

O.png 생성한 스레드에서는 love.graphicslove.window의 몇몇 기능이 제한되어 있으니 이런 모듈들은 되도록이면 메인 스레드에서 사용하시길 바랍니다.  

타입

Channel (한국어) 서로 다른 스레드 사이에 데이터를 주고받는 데 사용되는 객체입니다. Added since 0.9.0
Thread (한국어) 스레드를 표현하는 타입입니다. Added since 0.7.0

함수

love.thread.getChannel (한국어) 이름 있는 스레드 채널을 생성하거나 얻어옵니다. Added since 0.9.0
love.thread.newChannel (한국어) 이름 없는 스레드 채널을 생성합니다. Added since 0.9.0
love.thread.newThread (한국어) 루아 파일이나 FileData로부터 새로운 스레드를 생성합니다. Added since 0.7.0


같이 보기

다른 언어