void CreatingCompositeQueue() { XTaskQueueHandle queue; HRESULT hr = XTaskQueueCreate( XTaskQueueDispatchMode::ThreadPool, XTaskQueueDispatchMode::Manual, &queue); if (FAILED(hr)) { printf("Failed to create task queue: 0x%x\r\n", hr); return; } XTaskQueuePortHandle workPort; // Create a composite queue that uses the work port from // another queue for both the work and the completion ports. hr = XTaskQueueGetPort(queue, XTaskQueuePort::Work, &workPort); if (FAILED(hr)) { printf("Failed to get work port 0x%x\r\n", hr); XTaskQueueCloseHandle(queue); return; } XTaskQueueHandle compositeQueue; hr = XTaskQueueCreateComposite(workPort, workPort, &compositeQueue); if (FAILED(hr)) { printf("Failed to create composite queue 0x%x\r\n", hr); XTaskQueueCloseHandle(queue); return; } // Use the queue as needed. SubmitCallbacks(compositeQueue); // Wait a while for the callbacks to run. Sleep(1000); XTaskQueueCloseHandle(compositeQueue); XTaskQueueCloseHandle(queue); }
void CreatingImmediateQueue() { XTaskQueueHandle queue; HRESULT hr = XTaskQueueCreate( XTaskQueueDispatchMode::Immediate, XTaskQueueDispatchMode::Immediate, &queue); if (FAILED(hr)) { printf("Failed to create task queue: 0x%x\r\n", hr); return; } // Use the queue as needed. SubmitCallbacks(queue); // Wait a while for the callbacks to run. Sleep(1000); XTaskQueueCloseHandle(queue); }