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