오디오 플러그인 개발 - Multi-Threaded Software

도미노디오·2023년 6월 1일

멀티스레드 소프트웨어로서 오디오 플러그인

스레드(Thread)란?

하나의 프로그램은 수많은 컴퓨터 언어인 인스트럭션(Instruction)으로 이루어집니다.
현재 CPU 사이클에서 어떤 인스트럭션을 수행할 지 알려주는 것이 인스트럭션 포인터(Instruction Pointer, IP)입니다.
IP는 스레드라고 불리며, 스레드가 하나인 프로그램을 싱글 스레드 프로그램, 두개 이상인 프로그램을 멀티 스레드 프로그램이라고 부릅니다.

오디오 플러그인에서의 스레드

오디오 플러그인은 크게 두 가지 기능을 수행합니다.

  • 오디오 프로세서: 오디오 데이터를 DSP 알고리즘에 따라 프로세싱
  • GUI: 사용자와 상호 작용
    위 기능은 각각의 스레드에 의해 수행됩니다.
    따라서 오디오 플러그인은 최소 2개의 스레드(오디오 프로세서 스레드와 GUI 스레드)로 구성된다고 할 수 있습니다.

멀티 스레드 시스템에서 발생할 수 있는 문제

오디오 플러그인은 오디오 프로세서 스레드와 GUI 스레드로 동작하는데, 이 두 스레드 모두 오디오 플러그인의 파라미터를 공유한다는 특징을 갖습니다.
이는 오디오 프로세서 스레드도 파라미터에 대해 읽기/쓰기(Read/Write)가 가능하며 동시에 GUI 스레드도 파라미터에 대해 읽기/쓰기가 가능하다는 것을 뜻합니다.

이때 두 가지 문제가 발생할 가능성이 있습니다.

  • 데이터 불일치 (Inconsistent Data)
    두 개의 스레드가 동시에 한 파라미터에 접근하는데 하나는 Write, 다른 하나는 Read를 시도할 때 발생합니다.
    어느 한쪽에 부분적으로 잘못된 데이터가 저장되면서 두 스레드의 데이터가 불일치하게 됩니다.

  • 경합 조건 (Race Condition)
    두 개의 스레드가 동시에 한 파라미터에 Write를 시도할 때 발생합니다.
    두 스레드가 하나의 파라미터를 두고 경쟁을 펼치는 상황과 같아서 결과적으로 잘못된 데이터가 발생합니다.

profile
오디오 플러그인 개발자

0개의 댓글