Community Q&A

Where Wwise users help each other out!

Audiokinetic's Community Q&A is the forum where Wwise users ask and answer questions within the Wwise community. If you would like to get an answer from Audiokinetic's Technical support team, make sure you use the Support Tickets page.

How can I control thread affinity for my platform?

0 votes
I would like to set my own thread affinity for the various threads created by the Sound Engine. How can I achieve this?
asked May 7, 2014 in General Discussion by Benoit S. (Audiokinetic) (15,960 points)

1 Answer

0 votes
Best answer

You can control the initialization settings for four threads created by the Sound Engine:

  • AkDeviceSettings.threadProperties controls the IO thread
  • AkPlatformInitSettings.threadLEngine controls the Audio thread
  • AkPlatformInitSettings.threadBankManager controls the Bank Managing thread
  • AkPlatformInitSettings.threadMonitor controls the Monitor thread

You can set the affinity mask in each of these four structures.

answered May 7, 2014 by Benoit S. (Audiokinetic) (15,960 points)
Documentation for this subject is a bit scarce, but as I understand it, the thread affinity is an unsigned int containing a bit mask, where bit #x correspond to CPU core x, and you specify which CPU cores you want to use by setting the corresponding bit.

For example, if you want to only run on core 0, you specify:

dwAffinityMask = (1 << 0);

And if you want your thread to run on cores 3-5, you specify:

dwAffinityMask = (1 << 3) | (1 << 4) | (1 << 5);