1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
FAQ 2006/10/30
1. Ĺޥå
onig_new()ǡONIG_OPTION_FIND_LONGESTץ
ѤкĹޥåˤʤ롣
2. åɥ
åɥդˤˤϡʲ(A)(B)Τɤ餫Ԥʤ
褤
(A) Oniguruma Layer
oniguruma/regint.hNOT_RUBYʬΰʲΥޥ롣
USE_MULTI_THREAD_SYSTEM
THREAD_ATOMIC_START
THREAD_ATOMIC_END
THREAD_PASS
餫ν/λɬפǤСʲΥޥ롣
THREAD_SYSTEM_INIT
THREAD_SYSTEM_END
(B) Application Layer
ƱʣΥåɤɽ֥Ȥ롢
ޤϲ롢ȤԤʤäƤϤʤʤ
Υ֥Ȥ̤ΤΤǤäƤ⡣
⤦ܤϡΥɥȤ
"åɥդ˴ؤ"˽Ƥ
3. ꥹ
֤˴ؤꥹȤ¸ߤʤ
//END
åɥդ˴ؤ
åɥդˤˤϡ̤ΥץꥱǹԤ
Oniguruma饤֥ǹԤɤ餫֤ȤǤޤ
(OnigurumaѤ¦н褹뤫Onigurumaн褵뤫
ɤ餫ǹԤɬפȤȤǤ)
ˡˤĤơʲ(A)(B)ޤ
ޥåAPIϡ줾ΥץåȥեˤäƤ
ۤʤޤΤǡʲǶŪ˲Ƥ֤Τ
Ȥ̵Ǥºݤ˻ѤޥåAPIǡ
б뵡ǽΤΤꤷƤ
(A) Onigurumaб
oniguruma/regint.hNOT_RUBYǰϤޤƤʬ
ʲΥޥƺƥѥ뤷Ƥ
USE_MULTI_THREAD_SYSTEM
ñͭˤФ褤Ǥ
THREAD_ATOMIC_START
THREAD_ATOMIC_END
THREAD_ATOMIC_STARTTHREAD_ATOMIC_ENDǰϤޤ줿
ץΥʬ륹åɤ¹ˡ¾
åɤ˼¹ԸưʤȤݾ㤹Τ
Ƥ
(̤̾ꡢϤޤ줿ʬåɥȥߥå
Ȥ̣)
THREAD_PASS
¹Ԥåɤ顢¾Υåɤ˼¹ԸѾ
ΤƤ(ƥ塼ƤӽФ
Ȥ̣)
б뵡ǽʤСˤƤ
()
Rubyξˤȡ
RubyϼʬȤȼΥåɵǽƤޤ
εǽѤȡʲΤ褦Ф褤Ȥ
ʤޤ
#define USE_MULTI_THREAD_SYSTEM
#define THREAD_SYSTEM_INIT
#define THREAD_SYSTEM_END
#define THREAD_ATOMIC_START DEFER_INTS
#define THREAD_ATOMIC_END ENABLE_INTS
#define THREAD_PASS rb_thread_schedule()
Rubyξ硢ߤѤơåɤڤؤ
ԤäƤޤDEFER_INTSϳߥϥɥμ¹ԤŪ
ߤ뤿ΥޥǤENABLE_INTSޥdzߥϥɥ
μ¹ԤĤޤ
ˤäơTHREAD_ATOMIC_STARTTHREAD_ATOMIC_END
ǰϤޤ줿ʬμ¹ˡ¾Υåɤ˼¹Ըưޤ
(B) ץꥱб
ʲݾ㤹褦ˡåɤμ¹Ԥ椷Ƥ
ƱʣΥåɤɽ֥Ȥ롢ޤϲ롢Ȥ
ԤʤäƤϤʤʤΥ֥Ȥ̤ΤΤǤäƤ⡣
onig_new(), onig_new_deluxe(), onig_free()Τɤ줫θƤӽФ
ʣΥåɤƱ˼¹Ԥ뤳ȤƤƱǤʤ̤ˤޤޤ
ϲɬפʤΤȤȡɽ֥Ȥ
ǡǶ̤˻Ȥơ֥뤬ޤ
Υơ֥ФƤΥǡϿʣΥåɤǾͤ
۾ʾ֤ˤʤʤɬפǤ
// END
|