SMP Design

From AlsaProject
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The SMP / multithread design has several levels in the ALSA project codebase. The kernel drivers are fully SMP / thread safe. The alsa-lib was designed to allow grouping of commands for returned handle to optimize pthread locking. The snd_*_open() calls are thread safe. The use of returned handles must be serialized in the application using own locking scheme. Standalone (not handle related) functions in alsa-lib should be fully thread safe.

There are a few global variables that are used in alsa-lib, such as the global error handler pointer and the global root config pointer. Accessing / modifying these would be thread-unsafe.

If you find a bug in kernel or alsa-lib which breaks these rules, please, let us know.