1

core.threadDで使用してハンドルを適切に渡す方法は? 私はこのようにしようとしましたが、ハンドルが変更され、理由がわかりません:

void WorkerThread(handle hand) 
{
    …
}

…

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

1 に答える 1

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 );
}
于 2012-03-08T19:53:44.700 に答える