0
작업이 완료되었는지 테스트하는 올바른 방법입니까?Windows PPL (C++) : 작업 완료 여부를 테스트하는 올바른 방법입니까?
const concurrency::task<void> voidTask;
if (voidTask != m_getInfoAsync)
{
if (!m_getInfoAsync.is_done())
{
return 0;
}
}
if (voidTask != m_getRangeAsync)
{
if (!m_getRangeAsync.is_done())
{
return 0;
}
}
동기식 코드에서 비동기 API (XboxLive)를 사용하고 있습니다. 그에 대해서는 아무 것도 할 수 없습니다. 이것은 이전 작업이 새 작업을 시작하기 전에 완료되었는지 여부를 테스트하는 함수의 일부입니다. 기본적으로 concurrecy RT에 대한 지식이 없으므로 (비하면 제가 읽었습니다) 첫 번째 해결책은 비동기 작업이 시작되기 전에 변수를 설정하고 .then에서 변수를 false로 설정하는 것입니다. – Zingam
@Zingam 나쁜 생각. 작업이 완료되면 요청하지 말고 이러한 작업을 연결하십시오. –
어떻게하면됩니까? 나는 인터페이스 (가상 함수) getInfoAsync(), isAsyncComplete(), getRangeAsync()를 구현하고있다. 이 경우 비동기는 이러한 작업이 별도의 스레드에서 실행되고 있음을 의미합니다. 트리거 시스템에 의해 호출됩니다. 이러한 인터페이스는 이미 여러 다른 플랫폼 및 다른 API에 대해 구현됩니다. 어쨌든 나는 당신의 조언을 염두에 두겠다. – Zingam