Comments (5)
This makes sense since
NonSend
resources must be dropped on the thread in which they're initialized. With pipelined rendering enabled, the render app/world are sent to a dedicated thread, and ping-pongs between the main thread and the render thread. If you initialized the NonSend resource on the main thread, it shouldn't be accessible on any other thread.If you can avoid using a
!Send
type as a resource, I strongly suggest avoiding it if possible. If that isn't possible, you may want add it to the main app and use a Send proxy that is used in the render app. This is whatbevy_winit
does.Long term, we are planning on moving
!Send
resources from the World entirely, moving them intoApp
instead. See #9122.
To add to that, subapps are likely to be replaced with a world-based abstraction, rather than a full app, eliminating this footgun completely.
Depending on how long the above solutions will take, this should be documented in NonSend
/NonSendMut
. There's no mention of this footgun. ;)
from bevy.
I can reproduce this
from bevy.
This makes sense since NonSend
resources must be dropped on the thread in which they're initialized. With pipelined rendering enabled, the render app/world are sent to a dedicated thread, and ping-pongs between the main thread and the render thread. If you initialized the NonSend resource on the main thread, it shouldn't be accessible on any other thread.
If you can avoid using a !Send
type as a resource, I strongly suggest avoiding it if possible. If that isn't possible, you may want add it to the main app and use a Send proxy that is used in the render app. This is what bevy_winit
does.
Long term, we are planning on moving !Send
resources from the World entirely, moving them into App
instead. See #9122.
from bevy.
To add to that, subapps are likely to be replaced with a world-based abstraction, rather than a full app, eliminating this footgun completely.
from bevy.
Yep, totally happy to see a note added to the documentation.
from bevy.
Related Issues (20)
- Provide a MapEntities implementation that doesn't require mutable access to the EntityMapper HOT 1
- 3D causes wgpu error spam in console when using GLES HOT 1
- Crash when using Camera2DBundle without HDR + TonyMcMapFace tonemapping HOT 4
- Incorrect UV map used when using Lightmap component HOT 4
- Ability to detect if touch input is available
- Add `EntityMut::components` and `EntityRef` and `EntityWorldMut` equivalent HOT 19
- Add `World::entity_scope` to split the borrow on the `World` by extracting a single entity HOT 1
- ERROR bevy_asset::server: Asset Source 'AssetSourceId::Name(embeded)' does not exist HOT 5
- example `shader_instancing` doesn't work after GPU frustum culling HOT 3
- Emissive materials not displayed properly when imported from gltf files HOT 4
- Asset-Driven Nine Patch
- Main branch fails to compile on Rust beta: unbalanced backticks HOT 3
- Incorrect handling of EntityRef/Mut Queries + Resources resulting in false conflicts HOT 2
- VSCode, Rust-analyzer recompiling issue in 13.2
- The integration of Bevy into iOS/Android apps was broken. HOT 4
- Implement `Reflect` for `Events` type HOT 1
- Compute Task Pool (7)' panicked at crates\bevy_render\src\view\window\mod.rs:365:21: Couldn't get swap chain texture, operation unrecoverable: A timeout was encountered while trying to acquire the next frame HOT 4
- UI: image with Absolute position don't render correctly HOT 2
- use bevy in pop os get "libEGL fatal: DRI driver not from this Mesa build" HOT 1
- AlphaMode::Mask does not work as intended on StandardMaterial Extension when Depth prepass is enabled on the camera HOT 2
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 bevy.