멀티스레드 프로그래밍을 편리하게 해 주는 도구나 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) 등이 이러한 액터 모델을 구현한 프레임워크입니다.