Comments (5)
The issue here is that task unwrapping is done on the default scheduler rather than inline. This results in the continuation running in the main thread pool instead of in your main thread.
This behavior was introduced in 4879059 because a long chain of unwrapped tasks could cause a stack overflow in some situations.
from asyncplusplus.
Thank you, for the clarification. The issue is that current thread might have more context associated with it than the thread from the thread pool. E.g. in my case i use thread_local data to store a handle to an event loop object. In my opinion letting the client code to drive the thread selection will be optimal.
from asyncplusplus.
As a temporary workaround you can revert 4879059, which should bring back the old behavior of keeping everything in a single thread. I will look into solving this properly.
from asyncplusplus.
Does this behavior only exist if I use the inline scheduler?
I'm hoping that the default pool is never used if I always explicitly provide a scheduler.
from asyncplusplus.
I'm just going to revert 4879059, it's causing too much trouble.
from asyncplusplus.
Related Issues (20)
- Change the header file extension to .hpp HOT 1
- exception matching is broken on macos due to -fno-rtti in asyncplusplus library HOT 1
- error on centos 7 HOT 3
- Nested task spawning broken HOT 25
- wait on parallel_for results HOT 6
- Make a release HOT 1
- Conan package HOT 2
- Can you add more support for when_all, when_any, when_seq and fail? HOT 3
- thread wainting for task to end should not run another task HOT 5
- need more examples of Composition HOT 1
- task using unique_ptr HOT 2
- Compilation failures in C++20 due to removal of std::result_of HOT 2
- arm gcc 4.8 error HOT 3
- ERROR: terminate called without an active exception on QT application HOT 1
- Null Pointer Access HOT 1
- How to catch an exception with when_all()? HOT 2
- Chain a subset of tasks HOT 1
- [feature] iterative when_all HOT 1
- [question] Build both static and dynamic versions of the library HOT 8
- MacOS: missing Obj-C autorelease pool handling HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asyncplusplus.