나는 tbb::task_group
과 같은 것을 원하지만 주문 실행의 보장과의 차이점이 있습니다.TBB로 실행하려면?
serial_task_group tasks;
tasks.run([]{std::cout << 1;});
tasks.run([]{std::cout << 2;});
tasks.run([]{std::cout << 3;});
tasks.wait();
// guaranteed output: 123
tbb를 사용하여 어떻게 달성 할 수 있습니까?
현재 조건 변수를 사용하여 대기열에서 실행되는 명시 적 스레드가 있습니다. 그러나 대기열을 사용할 때의 문제점은 정확히 정확히 하나의 작업 만 task_group에서 활성화된다는 것을 의미합니다. .
실제로 무엇을 성취하려고하는지 알 수 없습니다. 내가 올바르게 이해한다면 단지 한 번에 하나씩 순서대로 실행되어야합니다. 그러나이 경우에는'task_group'을 위해 필요한 것을 보지 못합니다. 동시 실행이 없다면'task' 구조체에 위임하는 대신 호출하는 쓰레드/함수에서 직접 필요한 모든 작업을 수행 할 수 있습니다. 그리고 질문의 마지막 부분에 관해서 : 한 번에 하나 이상의 스레드가 작업을 실행하는 경우 한 번에 하나의 작업이 활성화 될 것입니다? – Grizzly
@ Grizzly : 다른 많은 동시 작업이 진행 중입니다. 그러나 여기에서 실행하려는 특정 계산은 순서대로 실행해야하며 매우 무겁습니다. 작업 스케줄러를 사용하는 대신 명시 적 스레드를 사용하는 경우 초과 가입으로 인해 상당한 오버 헤드가 발생합니다. 여기 내 목표는 작업 스케줄러에서 모든 것을 실행하는 것입니다. – ronag
tbb 흐름 그래프를 보았습니까? 윈도우즈에서 에이전트 라이브러리는 이것을 쉽게 수행 할 수 있습니다. tbb 플로우 그래프는 가장 비슷한 것입니다. – Rick