OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / glibc-linuxthreads / draft / man3 / pthread_cleanup_push.3
index 4a65b44..414a2df 100644 (file)
 .\" Translated Tue Dec 31 21:07:33 JST 2002
 .\"         by Suzuki Takashi.
 .\"
-.\"WORD:    cleanup handler     ¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é
-.\"WORD:    cancellation        ¼è¤ê¾Ã¤·
-.\"WORD:    stack-like          ¥¹¥¿¥Ã¥¯É÷¤Î
-.\"WORD:    non-portable extension  ¥Ý¡¼¥¿¥Ö¥ë¤Ç¤Ê¤¤³ÈÄ¥
-.\"WORD:    cancellation type   ¼è¤ê¾Ã¤··¿
-.\"WORD:    deferred            ¡Ê¼è¤ê¾Ã¤··¿¤Î¡ËÃÙ±ä
-.\"WORD:    asynchronous        ¡Ê¼è¤ê¾Ã¤··¿¤Î¡ËÈóƱ´ü
-.\"WORD:    cancellation mode   ¼è¤ê¾Ã¤··¿
+.\"WORD:    cleanup handler     クリーンアップハンドラ
+.\"WORD:    cancellation        取り消し
+.\"WORD:    stack-like          スタック風の
+.\"WORD:    non-portable extension  ポータブルでない拡張
+.\"WORD:    cancellation type   取り消し型
+.\"WORD:    deferred            (取り消し型の)遅延
+.\"WORD:    asynchronous        (取り消し型の)非同期
+.\"WORD:    cancellation mode   取り消し型
 .\"
 .\"
 .TH PTHREAD_CLEANUP 3 LinuxThreads
 
 
 .\"O .SH NAME
-.SH Ì¾Á°
+.SH 名前
 .\"O pthread_cleanup_push, pthread_cleanup_pop, pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np 
 .\"O \- install and remove cleanup handlers
 pthread_cleanup_push, pthread_cleanup_pop, pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np 
-\- ¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤òÅÐÏ¿¤ª¤è¤Óºï½ü¤¹¤ë
+\- クリーンアップハンドラを登録および削除する
 
 .\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.SH 書式
 .B #include <pthread.h>
 
 .BI "void pthread_cleanup_push(void (*" routine ") (void *), void *" arg ");"
@@ -54,7 +54,7 @@ pthread_cleanup_push, pthread_cleanup_pop, pthread_cleanup_push_defer_np, pthrea
 .BI "void pthread_cleanup_pop_restore_np(int " execute ");"
 
 .\"O .SH DESCRIPTION
-.SH "ÀâÌÀ"
+.SH "説明"
 
 .\"O Cleanup handlers are functions that get called when a thread
 .\"O terminates, either by calling 
@@ -62,12 +62,12 @@ pthread_cleanup_push, pthread_cleanup_pop, pthread_cleanup_push_defer_np, pthrea
 .\"O or because of
 .\"O cancellation. Cleanup handlers are installed and removed following a
 .\"O stack-like discipline.
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤Ï¡¢
+クリーンアップハンドラは、
 .BR "pthread_exit" (3)
-¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤ê¡¢¼è¤ê¾Ã¤·¤µ¤ì¤¿¤ê¤·¤Æ
-¥¹¥ì¥Ã¥É¤¬½ªÎ»¤¹¤ë¤È¤­¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ç¤¢¤ë¡£
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤Ï
-¥¹¥¿¥Ã¥¯É÷¤Îµ¬Â§¤Ë¤Ê¤é¤Ã¤ÆÅÐÏ¿¤ª¤è¤Óºï½ü¤µ¤ì¤ë¡£
+が呼び出されたり、取り消しされたりして
+スレッドが終了するときに呼び出される関数である。
+クリーンアップハンドラは
+スタック風の規則にならって登録および削除される。
 
 .\"O The purpose of cleanup handlers is to free the resources that a thread
 .\"O may hold at the time it terminates. In particular, if a thread
@@ -79,22 +79,22 @@ pthread_cleanup_push, pthread_cleanup_pop, pthread_cleanup_push_defer_np, pthrea
 .\"O with 
 .\"O .BR "malloc" (3)
 .\"O or close file descriptors on thread termination.
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤ÎÌÜŪ¤Ï¡¢
-¥¹¥ì¥Ã¥É¤¬½ªÎ»¤¹¤ë¤È¤­¤ËÊÝ»ý¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤»ñ¸»¤ò
-²òÊü¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
-¼ì¤Ë¡¢¥¹¥ì¥Ã¥É¤¬¥í¥Ã¥¯Ãæ¤Î mutex ¤òÊÝ»ý¤·¤¿¤Þ¤Þ
-½ªÎ»¤·¤¿¤ê¼è¤ê¾Ã¤·¤µ¤ì¤¿¤ê¤¹¤ë¤È¡¢
-¤½¤Î mutex ¤Ï±Êµ×¤Ë¥í¥Ã¥¯¤µ¤ì¤¿¤Þ¤Þ¤Ç¡¢
-¤Û¤«¤Î¥¹¥ì¥Ã¥É¤¬Àµ¾ï¤Ë¼Â¹Ô¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£
-¤³¤Î¤³¤È¤òËɤ°ºÇ¤â¤è¤¤ÊýË¡¤Ï¡¢
-mutex ¤ò¥í¥Ã¥¯¤¹¤ëľÁ°¤Ë¡¢
-mutex ¤Î¥í¥Ã¥¯¤ò²ò½ü¤¹¤ë¤¿¤á¤Î
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤òÅÐÏ¿¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
-Ʊ¤¸¤è¤¦¤Ë¡¢¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤Ï
-¥¹¥ì¥Ã¥É¤Î½ªÎ»»þ¤Ë
+クリーンアップハンドラの目的は、
+スレッドが終了するときに保持しているかもしれない資源を
+解放することである。
+殊に、スレッドがロック中の mutex を保持したまま
+終了したり取り消しされたりすると、
+その mutex は永久にロックされたままで、
+ほかのスレッドが正常に実行できなくなってしまう。
+このことを防ぐ最もよい方法は、
+mutex をロックする直前に、
+mutex のロックを解除するための
+クリーンアップハンドラを登録することである。
+同じように、クリーンアップハンドラは
+スレッドの終了時に
 .BR "malloc" (3)
-¤Ç³ÎÊݤµ¤ì¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò²òÊü¤·¤¿¤ê
-¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤ò¥¯¥í¡¼¥º¤·¤¿¤ê¤¹¤ë¤Î¤Ë»ÈÍѤǤ­¤ë¡£
+で確保されたメモリブロックを解放したり
+ファイルディスクリプターをクローズしたりするのに使用できる。
 
 .\"O .B "pthread_cleanup_push"
 .\"O installs the 
@@ -114,26 +114,26 @@ mutex 
 .\"O point, they are called in LIFO order: the most recently installed
 .\"O handler is called first.
 .B "pthread_cleanup_push"
-¤Ï´Ø¿ô
+は関数
 .I "routine"
-¤ò°ú¿ô
+を引数
 .I "arg"
-¤È¤È¤â¤Ë¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤È¤·¤ÆÅÐÏ¿¤¹¤ë¡£
-¤³¤Î»þÅÀ¤«¤é
-Âбþ¤¹¤ë
+とともにクリーンアップハンドラとして登録する。
+この時点から
+対応する
 .B "pthread_cleanup_pop"
-¤Þ¤Ç¤Î´Ö¡¢
-¤½¤Î¥¹¥ì¥Ã¥É¤¬
+までの間、
+そのスレッドが
 .BR "pthread_exit" (3)
-¤Þ¤¿¤Ï¼è¤ê¾Ã¤·¤Ë¤è¤Ã¤Æ½ªÎ»¤¹¤ë»þ¤Ë¡¢
-´Ø¿ô
+または取り消しによって終了する時に、
+関数
 .I "routine"
-¤¬°ú¿ô
+が引数
 .I "arg"
-¤ò¤È¤â¤Ê¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£
-½ªÎ»¤¹¤ë»þÅÀ¤ÇÊ£¿ô¤Î¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤Ï LIFO ½ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë:
-¤¹¤Ê¤ï¤Á¡¢ºÇ¸å¤ËÅÐÏ¿¤µ¤ì¤¿¥Ï¥ó¥É¥é¤¬ºÇ½é¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
+をともなって呼び出されるようになる。
+終了する時点で複数のクリーンアップハンドラが有効になっている場合は、
+クリーンアップハンドラは LIFO 順に呼び出される:
+すなわち、最後に登録されたハンドラが最初に呼び出される。
 
 .\"O .B "pthread_cleanup_pop"
 .\"O removes the most recently installed cleanup
@@ -150,21 +150,21 @@ mutex 
 .\"O argument is 0, the handler is only removed but not
 .\"O executed.
 .B "pthread_cleanup_pop"
-¤Ï¡¢ºÇ¸å¤ËÅÐÏ¿¤µ¤ì¤¿¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤òºï½ü¤¹¤ë¡£
-°ú¿ô
+は、最後に登録されたクリーンアップハンドラを削除する。
+引数
 .I "execute"
-¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç¡¢
+が 0 でない場合、
 .B "pthread_cleanup_pop"
-¤Ï¥Ï¥ó¥É¥é¤ò¼Â¹Ô¤¹¤ë¡£
-¤¹¤Ê¤ï¤Á¡¢
-´Ø¿ô
+はハンドラを実行する。
+すなわち、
+関数
 .I "routine"
-¤ò°ú¿ô
+を引数
 .I "arg"
-¤ò¤È¤â¤Ê¤Ã¤Æ¸Æ¤Ó½Ð¤¹¡£
-°ú¿ô
+をともなって呼び出す。
+引数
 .I "execute"
-¤¬ 0 ¤Î¾ì¹ç¤Ï¡¢¥Ï¥ó¥É¥é¤¬ºï½ü¤µ¤ì¤ë¤À¤±¤Ç¡¢¼Â¹Ô¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£
+が 0 の場合は、ハンドラが削除されるだけで、実行されることはない。
 
 .\"O Matching pairs of 
 .\"O .B "pthread_cleanup_push"
@@ -185,27 +185,27 @@ mutex 
 .\"O being introduced by the expansion
 .\"O of the matching 
 .\"O .BR "pthread_cleanup_pop" .
-Âбþ¤¹¤ë
+対応する
 .B "pthread_cleanup_push"
-¤È
+と
 .B "pthread_cleanup_pop"
-¤ÎÂФϡ¢Æ±¤¸´Ø¿ôÆâ¤Î¡¢
-Ʊ¤¸¥Ö¥í¥Ã¥¯³¬Áؤˤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-¼ÂºÝ¡¢
+の対は、同じ関数内の、
+同じブロック階層になければならない。
+実際、
 .B "pthread_cleanup_push"
-¤È
+と
 .B "pthread_cleanup_pop"
-¤Ï¥Þ¥¯¥í¤Ç¤¢¤ê¡¢
+はマクロであり、
 .B "pthread_cleanup_push"
-¤Î¥Þ¥¯¥íŸ³«¤Ë¤Ï
-³«¤­³ç¸Ì
+のマクロ展開には
+開き括弧
 .B "{"
-¤¬´Þ¤Þ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤ËÂбþ¤¹¤ë
-ÊĤ¸³ç¸Ì
+が含まれていて、それに対応する
+閉じ括弧
 .B "}"
-¤Ï¡¢Âбþ¤¹¤ë
+は、対応する
 .B "pthread_cleanup_pop"
-¤Î¥Þ¥¯¥íŸ³«¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
+のマクロ展開に含まれている。
 
 .\"O .B "pthread_cleanup_push_defer_np"
 .\"O is a non-portable extension that
@@ -220,18 +220,18 @@ mutex 
 .\"O cancellation. This ensures that the cleanup mechanism is effective
 .\"O even if the thread was initially in asynchronous cancellation mode.
 .B "pthread_cleanup_push_defer_np"
-¤Ï¡¢
+は、
 .B "pthread_cleanup_push"
-¤È
+と
 .BR "pthread_setcanceltype" (3)
-¤òÁȤ߹ç¤ï¤»¤¿¡¢¥Ý¡¼¥¿¥Ö¥ë¤Ç¤Ê¤¤³ÈÄ¥¤Ç¤¢¤ë¡£
+を組み合わせた、ポータブルでない拡張である。
 .B "pthread_cleanup_push"
-¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤è¤¦¤Ë¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤òÅÐÏ¿¤¹¤ë¤¬¡¢
-Ʊ»þ¤Ë¤½¤Î»þÅÀ¤Î¼è¤ê¾Ã¤··¿¤òÊݸ¤·¡¢
-¼è¤ê¾Ã¤··¿¤òÃÙ±ä (deferred) ¤ËÊѹ¹¤¹¤ë¡£
-¤³¤ì¤Ë¤è¤Ã¤Æ¡¢
-¥¹¥ì¥Ã¥É¤Î¼è¤ê¾Ã¤··¿¤¬ÈóƱ´ü (asynchronous) ¤Ç¤¢¤Ã¤Æ¤â
-¥¯¥ê¡¼¥ó¥¢¥Ã¥×µ¡¹½¤¬Í­¸ú¤Ë¤Ê¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¡£
+とまったく同じようにクリーンアップハンドラを登録するが、
+同時にその時点の取り消し型を保存し、
+取り消し型を遅延 (deferred) に変更する。
+これによって、
+スレッドの取り消し型が非同期 (asynchronous) であっても
+クリーンアップ機構が有効になることが保証される。
 
 .\"O .B "pthread_cleanup_pop_restore_np"
 .\"O pops a cleanup handler introduced by
@@ -241,22 +241,22 @@ mutex 
 .\"O .B "pthread_cleanup_push_defer_np"
 .\"O was called.
 .B "pthread_cleanup_pop_restore_np"
-¤Ï
+は
 .B "pthread_cleanup_push_defer_np"
-¤Ë¤è¤Ã¤ÆÅÐÏ¿¤µ¤ì¤¿¤Ï¥¯¥ê¡¼¥ó¥¢¥Ã¥×¥Ï¥ó¥É¥é¤òºï½ü¤·¡¢
-¼è¤ê¾Ã¤··¿¤ò
+によって登録されたはクリーンアップハンドラを削除し、
+取り消し型を
 .B "pthread_cleanup_push_defer_np"
-¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿»þÅÀ¤ÎÃͤËÌ᤹¡£
+が呼び出された時点の値に戻す。
 
 .\"O .B "pthread_cleanup_push_defer_np"
 .\"O and 
 .\"O .B "pthread_cleanup_pop_restore_np"
 .\"O must occur in matching pairs, at the same level of block nesting.
 .B "pthread_cleanup_push_defer_np"
-¤È
+と
 .B "pthread_cleanup_pop_restore_np"
-¤ÏÂФˤʤäƤ¤¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
-¤È¤â¤ËƱ¤¸¥Ö¥í¥Ã¥¯³¬Áؤˤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+は対になっていなければならず、
+ともに同じブロック階層になければならない。
 
 .\"O The following sequence
 
@@ -273,7 +273,7 @@ pthread_cleanup_pop_defer_np(execute);
 .fi
 
 .\"O is functionally equivalent to (but more compact and more efficient than)
-¤Î¤è¤¦¤Êή¤ì¤Ïµ¡Ç½Åª¤Ë¼¡¤Î¤â¤Î¤ÈƱÅù (¤À¤¬¤è¤ê¥³¥ó¥Ñ¥¯¥È¤Ç¤è¤ê¸úΨŪ) ¤Ç¤¢¤ë¡£
+のような流れは機能的に次のものと同等 (だがよりコンパクトでより効率的) である。
 
 .RS
 .ft 3
@@ -292,29 +292,29 @@ pthread_cleanup_pop_defer_np(execute);
 .fi
 
 .\"O .SH "RETURN VALUE"
-.SH "ÊÖ¤êÃÍ"
+.SH "返り値"
 
 .\"O None.
-¤Ê¤·¡£
+なし。
 
 .\"O .SH ERRORS
-.SH "¥¨¥é¡¼"
+.SH "ã\82¨ã\83©ã\83¼"
 
 .\"O None.
-¤Ê¤·¡£
+なし。
 
 .\"O .SH AUTHOR
-.SH "Ãø¼Ô"
+.SH "著者"
 Xavier Leroy <Xavier.Leroy@inria.fr>
 
 .\"O .SH "SEE ALSO"
-.SH "´ØÏ¢¹àÌÜ"
+.SH "関連項目"
 .BR "pthread_exit" (3),
 .BR "pthread_cancel" (3),
 .BR "pthread_setcanceltype" (3).
 
 .\"O .SH EXAMPLE
-.SH "Îã"
+.SH ""
 
 .\"O Here is how to lock a mutex 
 .\"O .I "mut"
@@ -322,13 +322,13 @@ Xavier Leroy <Xavier.Leroy@inria.fr>
 .\"O unlocked if the thread is canceled while 
 .\"O .I "mut"
 .\"O is locked:
-¼¡¤ÎÎã¤Ï¡¢ mutex
+次の例は、 mutex
 .I "mut"
-¤ò¥í¥Ã¥¯Ãæ¤Ë¥¹¥ì¥Ã¥É¤¬¼è¤ê¾Ã¤·¤µ¤ì¤¿¤é
-¥í¥Ã¥¯¤ò²ò½ü¤¹¤ë¤è¤¦¤Ë¡¢
+をロック中にスレッドが取り消しされたら
+ロックを解除するように、
 mutex
 .I "mut"
-¤ò¥í¥Ã¥¯¤¹¤ëÊýË¡¤Ç¤¢¤ë
+をロックする方法である
 
 .RS
 .ft 3
@@ -337,7 +337,7 @@ mutex
 pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
 pthread_mutex_lock(&mut);
 .\"O/* do some work */
-/* ²¿¤«¤ò¤¹¤ë */
+/* 何かをする */
 pthread_mutex_unlock(&mut);
 pthread_cleanup_pop(0);
 .ft
@@ -346,7 +346,7 @@ pthread_cleanup_pop(0);
 .fi
 
 .\"O Equivalently, the last two lines can be replaced by
-ºÇ¸å¤Î 2 ¹Ô¤Ï¼¡¤Î¤â¤Î¤ÈƱÅù¤Ç¡¢ÃÖ¤­´¹¤¨¤¬²Äǽ¤Ç¤¢¤ë
+最後の 2 行は次のものと同等で、置き換えが可能である
 
 .RS
 .ft 3
@@ -373,30 +373,30 @@ pthread_cleanup_pop(1);
 .\"O resulting in both cases in the thread trying to
 .\"O unlock a mutex not locked by the current thread. This is the main
 .\"O reason why asynchronous cancellation is difficult to use.
-¾å¤Î¥³¡¼¥É¤Ï¼è¤ê¾Ã¤··¿¤¬ÃÙ±ä (deferred) ¤Ç¤¢¤ë¾ì¹ç¤Ë¸Â¤Ã¤Æ
-°ÂÁ´¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È (
+上のコードは取り消し型が遅延 (deferred) である場合に限って
+安全であることに注意すること (
 .BR "pthread_setcanceltype" (3)
-¤ò»²¾È ) ¡£
-¼è¤ê¾Ã¤··¿¤¬ÈóƱ´ü (asynchronous) ¤Î¾ì¹ç¤Ë¤Ï¡¢
-¥¹¥ì¥Ã¥É¤Î¼è¤ê¾Ã¤·¤¬
+を参照 ) 。
+取り消し型が非同期 (asynchronous) の場合には、
+スレッドの取り消しが
 .B "pthread_cleanup_push"
-¤È
+と
 .B "pthread_mutex_lock"
-¤Î´Ö¤ä¡¢
+の間や、
 .B "pthread_mutex_unlock"
-¤È
+と
 .B "pthread_cleanup_pop"
-¤Î´Ö¤Çµ¯¤³¤ë²ÄǽÀ­¤¬¤¢¤ê¡¢
-¤É¤Á¤é¤Î¾ì¹ç¤Ë¤â¥¹¥ì¥Ã¥É¤Ï¥«¥ì¥ó¥È¥¹¥ì¥Ã¥É¤Ç
-¥í¥Ã¥¯¤·¤Æ¤¤¤Ê¤¤ mutex ¤ò¥í¥Ã¥¯²ò½ü¤·¤è¤¦¤È¤·¤Æ¤·¤Þ¤¦¡£
-¤³¤Î¤³¤È¤ÏÈóƱ´ü¼è¤ê¾Ã¤·¤¬»È¤¤¤Ë¤¯¤¤¤³¤È¤Î¼ç¤ÊÍýͳ¤Ç¤¢¤ë¡£
+の間で起こる可能性があり、
+どちらの場合にもスレッドはカレントスレッドで
+ロックしていない mutex をロック解除しようとしてしまう。
+このことは非同期取り消しが使いにくいことの主な理由である。
 
 .\"O If the code above must also work in asynchronous cancellation mode,
 .\"O then it must switch to deferred mode for locking and unlocking the
 .\"O mutex:
-¾å¤Î¥³¡¼¥É¤¬ÈóƱ´ü¼è¤ê¾Ã¤··¿¤Ç¤âÆ°ºî¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¾ì¹ç¡¢
-mutex ¤Î¥í¥Ã¥¯¤ª¤è¤Ó¥í¥Ã¥¯²ò½ü¤Î¤¿¤á¤Ë¡¢
-¼è¤ê¾Ã¤··¿¤òÃÙ±ä (deferred) ¤ËÊѹ¹¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤:
+上のコードが非同期取り消し型でも動作しなければならない場合、
+mutex のロックおよびロック解除のために、
+取り消し型を遅延 (deferred) に変更しなければならない:
 
 .RS
 .ft 3
@@ -418,11 +418,11 @@ pthread_setcanceltype(oldtype, NULL);
 .\"O .B "pthread_cleanup_push_defer_np"
 .\"O and 
 .\"O .BR "pthread_cleanup_pop_restore_np" :
-¾å¤Î¥³¡¼¥É¤Ï¡¢¥Ý¡¼¥¿¥Ö¥ë¤Ç¤Ê¤¤´Ø¿ô
+上のコードは、ポータブルでない関数
 .B "pthread_cleanup_push_defer_np"
-¤È
+と
 .B "pthread_cleanup_pop_restore_np"
-¤ò»È¤¦¤³¤È¤Ç¡¢¤è¤ê¥³¥ó¥Ñ¥¯¥È¤Ç¤è¤ê¸úΨŪ¤ÊÊýË¡¤Ë½ñ¤­Ä¾¤¹¤³¤È¤¬¤Ç¤­¤ë:
+を使うことで、よりコンパクトでより効率的な方法に書き直すことができる:
 
 .RS
 .ft 3