더북(TheBook)

멀티스레드 프로그래밍을 편리하게 해 주는 도구나 API, 언어들이 있습니다. Visual Studio Concurrency Visualizer 말고 Intel Parallel Studio, Windows Performance Toolkit도 멀티스레드 프로그래밍을 도와줍니다.

C++에서 제공하는 std::future 등을 이용하여 비동기 프로그래밍을 할 수 있습니다. 파이썬이나 Go 언어에서 제공하는 코루틴도 비동기 프로그래밍을 위한 기능입니다. C#에서는 async, await 키워드를 이용하여 비동기 프로그래밍이 가능합니다.

C, C++의 OpenMP를 이용해서 루프를 쉽게 할 수 있습니다. 예를 들어 다음 코드에서 루프 구문은 CPU 개수만큼 병렬 실행을 하게 합니다.

코드 chapter_1\prime_number_openmp

#pragma omp parallel for schedule(guided)
for (i = 1; i <= 1000000; i++)
{
    if (IsPrime(i))
    {
        lock(primes_critSec)
        { primes.Add(i); }
    }
}

 

싱글스레드 프로세스가 다른 프로세스와 메시지를 주고받으면서 병렬 처리를 하는 모델을 일반화한 것이 액터 모델(actor model)입니다. 게임에서는 아직 잘 쓰지 않지만, 아카(Akka)나 스파크(Spark) 등이 이러한 액터 모델을 구현한 프레임워크입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.