2012-03-08 2 views
1

Как правильно передать рукоятку с помощью core.thread в D? Я пытался сделать это так, но ручка будет меняться, и я не знаю, почему: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); 
} 
Смежные вопросы