割り込みハンドラ
Solaris、macOS、FreeBSDなどのOSでは、割り込みスレッド(英: Interrupt thread)と呼ばれる方式が採用されている。割り込みハンドラは高優先度のスレッドであり、割り込みによって起動され、排他制御でブロックされるという重要な特徴がある。これによってカーネル内のロック機構が大幅に単純化される。また割り込みスレッドは、より優先度の高い割り込みスレッドでプリエンプションされる。
割り込みスレッドを用いることにより、割り込みハンドラの大部分を制限の多いリエントラント実装や割り込みそのもののマスクではなく、制限がより緩く、かつ並列度が高いスレッドセーフのみの条件下で実装することができる。割り込みスレッドを使用しない場合、割り込まれた処理は割り込みハンドラの処理が終了するまでは全く実行できないため、割り込みハンドラがリエントラントでないと予期せぬ挙動となる。割り込みスレッドを導入すると割り込みハンドラの処理がスケジューリングの対象となるため、割り込みスレッド全体に対するリエントラント性は(スレッドとして決して実装できない、割り込みスレッドの起動処理を除いて)必要なくなる。
割り込みスレッドが本来の割り込み処理に近い挙動をとるためには単純にスレッドとしての実装だけでなく、特にカーネル内にて割り込み向けではないスレッドを割り込みスレッドがプリエンプトすることが必要となる。SVR4では実際にカーネル内に限定的なプリエンプション・ポイントを実装したが実用に耐える性能は実現できず、Solarisにてより粒度が細かいロックをカーネルに導入する動機となった。