1

perl モジュールの *.XS 部分内の C 関数で、現在の perl スレッド ID を取得する必要があります。

純粋な perl (*.pm 部分) では、単純に次のようにします。

$id = threads->tid();

しかし、XS でこの値を取得するための推奨される方法は何ですか?

残念ながら、http://perldoc.perl.org/perlthrtut.htmlとhttp://perldoc.perl.org/threads.htmlでは、XS でのスレッドの扱いについては触れられていません

前もって感謝します

-- kmx

4

2 に答える 2

2

メソッドを呼び出すには、 を使用しcall_methodます。

 UV get_tid() {
    dSP;
    UV tid;

    ENTER;
    SAVETMPS;

    PUSHMARK(SP);
    XPUSHs(sv_2mortal(newSVpv("threads", 0)));
    PUTBACK;

    count = call_method("tid", G_SCALAR|G_EVAL);

    SPAGAIN;
    if (SvTRUE(ERRSV) || count != 1)
        tid = 0;
    else
        tid = (UV)POPi;
    PUTBACK;

    FREETMPS;
    LEAVE;

    return tid;
 }
于 2012-01-27T19:52:03.210 に答える
0

スレッド自体がどのようにそれを行うかを見てください! threadsCPAN からダウンロードして解凍し、 をご覧になることをお勧めしますthreads.xs。必要な部分は という関数ithread_tidです。

于 2012-01-27T19:37:36.687 に答える