セマフォは同プロセス内においてスレッドの同期に使用される。
セマフォは付随するカウントを持つ同期オブジェクトである、通常いくつかの制限ソースで使用される番号を表している。スレッドはこれらのリソースの1つを、取得呼び出しを使用して取得する。使用できるリソースがない場合は、呼び出しをブロックするか、「待機」オプションによってはエラーを返す。リソースが使用可能な場合(カウントが0以外の場合)、カウントは減少していき、エラーなしで呼び出しは返る。
スレッドは解放呼び出しによって、リソースを解放する。この結果、カウントが増えていく。使用できるリソースがなく他のスレッドがブロックされた場合、スレッドの1つは解放される。最初のスレッドが解放されているため、他のスレッドはブロックされたままであり、カウントは0まで減少していく。