2012-03-08 92 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); 
}