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