Funnel (concurrent computing)

In Computer science, a funnel is a synchronization primitive used in kernel development to protect system resources.

First used on Digital UNIX as a way to "funnel" device driver execution onto a single processor, funnels are now used in the Mac OS X kernel to serialize access to the BSD portion of XNU.

[1] A funnel is a mutual exclusion (mutex) mechanism that prevents more than one thread from accessing certain kernel resources at the same time.

Each thread acquires a funnel when it enters a synchronized portion of the kernel, and releases it when it leaves.

As a result of these limitations and the lack of granularity, funnels are being phased out of Mac OS X.