core.thread
Dで使用してハンドルを適切に渡す方法は? 私はこのようにしようとしましたが、ハンドルが変更され、理由がわかりません:
void WorkerThread(handle hand)
{
…
}
…
auto worker = new Thread( { WorkerThread( m_handle ); } );
コンストラクターは、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 );
}