[ https://issues.apache.org/jira/browse/ARROW-7001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17290873#comment-17290873 ]
Anton Malakhov commented on ARROW-7001: --------------------------------------- Please consider ideas from this blog: https://habr.com/en/company/intel/blog/542908/ > [C++] Develop threading APIs to accommodate nested parallelism > --------------------------------------------------------------- > > Key: ARROW-7001 > URL: https://issues.apache.org/jira/browse/ARROW-7001 > Project: Apache Arrow > Issue Type: New Feature > Components: C++ > Reporter: Wes McKinney > Assignee: Weston Pace > Priority: Major > Fix For: 4.0.0 > > > Tasks invoked in parallel may be able to submit their own subtasks, which in > OpenMP and TBB documentation is often called "nested parallelism". > If a task blocks on the completion of subtasks, then outright deadlocks are > possible -- running tasks are all blocking on their subtasks, but the thread > pool will not schedule any further tasks. > I suggest that such code have a way to indicate to the thread pool (if one is > passed in) that it is blocking on the completion of other tasks so that > further tasks can be run while the task waits for its child tasks to > complete. One possible way to do this is to have a floating "soft limit" for > concurrent tasks that can be incremented when tasks are waiting. > So if we normally allow 8 concurrent tasks, then this can be temporarily > increased for each "suspended" task. Preferably we would provide some way for > the dependent task group to "awaken" the suspended task so that it does not > have to do any work while waiting for the task group to finish > Note this feature can also be used in tasks that are waiting for IO calls -- This message was sent by Atlassian Jira (v8.3.4#803005)