pytho****@googl*****
pytho****@googl*****
2011年 11月 9日 (水) 17:07:17 JST
Revision: 8d6b9bc0fca8 Author: Naoki INADA <inada****@klab*****> Date: Tue Nov 8 23:49:44 2011 Log: Update 2.7.2: c-api/file http://code.google.com/p/python-doc-ja/source/detail?r=8d6b9bc0fca8 Modified: /c-api/file.rst ======================================= --- /c-api/file.rst Fri Apr 1 15:41:14 2011 +++ /c-api/file.rst Tue Nov 8 23:49:44 2011 @@ -66,7 +66,7 @@ *p* に関連付けられたファイルオブジェクトを :c:type:`FILE\*` で返します。 - 呼び出し側が GIL を開放している間もこの関数が返した :c:type:`FILE\*` + 呼び出し側が :term:`GIL` を開放している間もこの関数が返し た :c:type:`FILE\*` オブジェクトを使うのであれば、以下に解説されてい る :c:func:`PyFile_IncUseCount` と :c:func:`PyFile_DecUseCount` 関数を適切に呼び出さなければなりません。 @@ -81,10 +81,19 @@ :c:func:`PyFile_DecUseCount` を呼び出さなければなりません。 そうしなければ、 Python はそのファイルオブジェクトを永遠に閉じません。 - この関数を呼び出すときは、GILを取得していなければなりません。 - - 例えば、 :c:func:`PyFile_AsFile` を呼び出した直後、GILを開放する - 前にこの関数を呼び出します。 + この関数を呼び出すときは、:term:`GIL` を取得していなければなりません。 + + 例えば、 :c:func:`PyFile_AsFile` を呼び出した後、GILを開放する前に + この関数を呼び出します。 :: + + FILE *fp = PyFile_AsFile(p); + PyFile_IncUseCount(p); + /* ... */ + Py_BEGIN_ALLOW_THREADS + do_something(fp); + Py_END_ALLOW_THREADS + /* ... */ + PyFile_DecUseCount(p); .. versionadded:: 2.6 @@ -97,7 +106,8 @@ これは、先に行った :c:func:`PyFile_IncUseCount` の呼び出しを取り消すため だけに呼び出されるでしょう。 - この関数を呼び出すときは、GILを取得していなければなりません。 + この関数を呼び出すときは、 :term:`GIL` を取得していなければなりません。 + (上の例を参照してください) .. versionadded:: 2.6