##
6 スレッドを使った処理

関数`getcontext()` は、スレッド毎に別々の`Context` オブジェクトにアクセスします。別のスレッドコンテキストを持つということは、 複数のスレッドが互いに影響を及ぼさずに (`getcontext.prec=10` のような) 変更を適用できるということです。

同様に、`setcontext()` 関数は自動的に引数のコンテキスト を現在のスレッドのコンテキストに設定します。

`getcontext()` を呼び出す前に`setcontext()` が 呼び出されていなければ、現在のスレッドで使うための新たなコンテキスト を生成するために`getcontext()` が自動的に呼び出されます。

新たなコンテキストは、DefaultContext と呼ばれる雛形から コピーされます。アプリケーションを通じて全てのスレッドに同じ 値を使うようにデフォルトを設定したければ、DefaultContext オブジェクトを直接変更します。`getcontext()` を呼び出す スレッド間で競合条件が生じないようにするため、DefaultContext への変更はいかなるスレッドを開始するよりも前に 行わねば なりません。以下に例を示します:

    # スレッドを立ち上げる前にアプリケーションにわたるデフォルトを設定
    DefaultContext.prec = 12
    DefaultContext.rounding = ROUND_DOWN
    DefaultContext.traps = ExtendedContext.traps.copy()
    DefaultContext.traps[InvalidOperation] = 1
    setcontext(DefaultContext)

    # その後でスレッドを開始
    t1.start()
    t2.start()
    t3.start()
     . . .