###
7.5.4.1 `Semaphore` の例

セマフォはよく有限なリソースを保護するために使われます。 例えばデータベースサーバーなどです。 リソースのサイズが固定されているすべての状況で、 有限セマフォを使用するべきです。 様々な労働者スレッドを産み出す前に、あなたのメインスレッドは セマフォを初期化するべきです:

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

いったん産み出せば、サーバーへ接続する必要が生じたときに、 労働者スレッドはセマフォの`acquire`と`release`を呼出します:

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

有限セマフォの使用は、獲得した以上に解放したことを検出できないという プログラミングエラーを減らします。