# Unity JobSystem ## JobSystem 詳細介紹 * **IJobParallelFor** * batch * 分配流程 * **Safety System** * **Native Container** * **Job Dependencies** * **BurstCompile** # 可以講的 * job 的組成有 **blittable types**、**NativeContainer** * Safety System * custom native container * job 的使用上 **scheduler**、**run**、**Job Dependencies** * IJobParallelFor 的 **batch**、**分配流程**、**Work stealing** * BurstCompile ## 標題 * Job 內只能用 [blittable types](https://learn.microsoft.com/en-us/dotnet/framework/interop/blittable-and-non-blittable-types) 和 NativeContainer * 在C#中有一些类型在托管与非托管代码之间可以直接使用,不需要进行任何转换,这些类型就称之为 blittable types * NativeContainer 只能用實質型別 * NativeContainer分配器(Allocator) * Allocator.Temp: 不能把 Temp 的 Container 丟給 job 使用 * Allocator.TempJob: 沒有主動釋放會跳警告 * Internal: JobTempAlloc has allocations that are more than the maximum lifespan of 4 frames old - this is not allowed and likely a leak * Allocator.Persistent * NativeContainers don’t implement ref return * 不能用 nativeArray[0]++ * 實測數值正確,但文件說不行??? * Safty Check 只有在 Editor 有效 * 包在 ENABLE_UNITY_COLLECTIONS_CHECKS define symbol 裡面 * Safty Check 的開銷問題 * 直觀的檢查機制消耗很大 * 有了 schedule 後能建立 directed acyclic job graph,降低檢查的開銷 * job scheduler 盡可能創建 worker threads * JobsUtility.JobWorkerCount 可以限制數量避免壟斷CPU資源 * job.run() 直接在主執行緒上執行 * Burst Compiler 基本介紹 * Burst is a compiler that you can use with Unity's job system to create code that enhances and improves your application's performance. It translates your code from IL/.NET bytecode to optimized native CPU code that uses the LLVM compiler. * Burst Inspector * 不能用託管對象與引用類型 * ECS?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up