Học Unity
»
Lập trình Unity 2D
»
Chia sẻ cách làm
»
Cách lập trình đa luồng trong unity
Danh hiệu: Administration
Nhóm: Guests
Gia nhập: 19-08-2014(UTC) Bài viết: 145
Được cảm ơn: 7 lần trong 6 bài viết
|
Unity Job System là một tính năng mới trong Unity 2018.1 và là một công cụ để tạo và quản lý các tác vụ được chạy trên nhiều luồng một cách an toàn và dễ dàng. Để sử dụng Job System, bạn cần phải cài đặt Unity 2018.1 trở lên và bật tính năng Burst Compiler trong Unity Editor. Để sử dụng Job System, bạn cần tạo một struct đại diện cho tác vụ của bạn và sử dụng struct đó để tạo một đối tượng Job. Bạn có thể sử dụng [BurstCompile] attribute để đánh dấu một struct như một Job và sử dụng Burst compiler để tối ưu hóa cho việc xử lý. Trích dẫn:using Unity.Collections; using Unity.Jobs; using UnityEngine;
public class MyMonoBehaviour : MonoBehaviour { private int[] data; private int[] results;
private void Start() { data = new int[10000]; results = new int[10000];
// Tạo một Job với struct MyJob MyJob job = new MyJob { data = new NativeArray<int>(data, Allocator.TempJob), results = new NativeArray<int>(results, Allocator.TempJob) };
// Tạo một đối tượng JobHandle và lấy nó từ việc Schedule của job JobHandle handle = job.Schedule(data.Length, 100);
// Đợi cho Job kết thúc handle.Complete();
// Sử dụng kết quả for (int i = 0; i < results.Length; i++) { Debug.Log(results[i]); }
// Giải phóng tài nguyên đã sử dụng job.data.Dispose(); job.results.Dispose(); }
[BurstCompile] private struct MyJob : IJobParallelFor { public NativeArray<int> data; public NativeArray<int> results;
public void Execute(int index) { // Xử lý dữ liệu tại vị trí index results[index] = data[index] * 2; } } } chúng ta đã tạo một Job với struct MyJob và sử dụng JobHandle để chạy Job trên nhiều luồng. Chúng ta cũng đã sử dụng tất cả các tài nguyên sử dụng trong Job để tránh tình trạng tài nguyên bị leak.
|
|
|
|
Học Unity
»
Lập trình Unity 2D
»
Chia sẻ cách làm
»
Cách lập trình đa luồng trong unity
Di chuyển
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.