2012-03-08 7 views
1

Dでcore.threadを使用して正しくハンドルを渡すには?私はこのようにそれを行うことを試みたが、ハンドルが変更されますと、私はその理由を知らない:d言語スレッド

void WorkerThread(handle hand) 
{ 
    … 
} 

… 

auto worker = new Thread({ WorkerThread(m_handle); }); 

答えて

1

Threadコンストラクタは、コンテキストを持つことができるデリゲートを取ることができます。示されているコードでは、コンテキストは囲み関数です。何らかの理由で問題が発生した場合は、次のようなことができるはずです。

void StartThread(handle hand) { 
    struct Con { 
    handle m_handle; 
    void Go() { WorkerThread(m_handle); } 
    } 

    Con con = new Con; 
    con.m_handle = hand; 
    auto worker = new Thread(&con.Go); 
} 
関連する問題