###
1 `Semaphore` の例

セマフォはしばしば、容量に限りのある資源、例えばデータベースサーバなど を保護するために使われます。リソースのサイズが固定の状況では、常に 有限セマフォを使わねばなりません。主スレッドは、作業スレッドを 立ち上げる前にセマフォを初期化します:

    maxconnections = 5
    ...
    pool_sema = BoundedSemaphore(value=maxconnections)

作業スレッドは、ひとたび立ち上がると、サーバへ接続する必要が 生じたときにセマフォの`acquire` および`release` メソッドを呼び出します:

    pool_sema.acquire()
    conn = connectdb()
    ... use connection ...
    conn.close()
    pool_sema.release()

有限セマフォを使うと、セマフォを獲得回数以上に解放してしまうという プログラム上の間違いを見逃しにくくします。