버전 3.0부터 TBB는 비동기 작업을 지원합니다. 이를 위해 tbb::task::enqueue()
이라는 특별한 직장 제공 방법이 추가되었습니다. tbb::task::spawn()
과 달리이 방법을 사용하면 원래 스레드가 wait_for_all()
과 같은 작업 디스패치 메서드에 절대 입력하지 않아도 대기열에 포함 된 작업이 실행됩니다.
task::enqueue()
에 대한 간단한 사용 예 : @JimMishell는 코멘트, GUI 이벤트 처리가 "디자인 패턴"에서 찾을 수 있습니다 위해 그것을 사용하는 방법의 예에서 언급 한 바와 같이
class MyTask : public tbb::task {
/*override*/ tbb::task* execute() {
// Do the job
return NULL; // or a pointer to a new task to be executed immediately
}
};
MyTask* t = new (tbb::task::allocate_root()) MyTask();
tbb::task::enqueue(*t);
// Do other job; the task will be executed asynchronously
; 이 방법에 대한 공식적인 설명은 Reference manual에 있습니다 (두 가지 모두 TBB documentation 참조).
http://threadingbuildingblocks.org/documentation.php에서 "디자인 패턴"안내서를 다운로드하십시오. GUI 스레드 (6 장, "GUI 스레드"참조)에서 장시간 실행되는 작업의 부담을 덜어 주며, 수행 방법을 보여주는 간단한 예제가 있습니다. –