д языковая нить - PullRequest
       13

д языковая нить

1 голос
/ 08 марта 2012

Как правильно передать дескриптор, используя core.thread в D? Я пытался сделать это так, но ручка изменится, и я не знаю почему:

void WorkerThread(handle hand) 
{
    …
}

…

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

1 Ответ

1 голос
/ 08 марта 2012

Конструктор 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 );
}
...