Files
Misaki.HighPerformance/Misaki.HighPerformance.Jobs/JobHandle.cs
Misaki a9c143c2a2 SPMD SIMD math library & lock-free job system integration
- Add new SPMD SIMD math project with scalar/vector lanes
- Integrate SPMD jobs and scheduling into job system
- Implement lock-free job dependency management
- Update math functions for .NET 10 and SIMD performance
- Add SPMD benchmarks, compress-store tests, and race tests
- Introduce generic Result<T> error handling utilities
- Solution/project file updates and code cleanup
2026-02-11 22:44:30 +09:00

50 lines
1.1 KiB
C#

namespace Misaki.HighPerformance.Jobs;
public readonly struct JobHandle : IEquatable<JobHandle>
{
private readonly int _id;
private readonly int _generation;
public int ID => _id - 1;
public int Generation => _generation - 1;
public static JobHandle Invalid => default;
public bool IsValid => this != Invalid;
internal JobHandle(int id, int generation)
{
_id = id + 1;
_generation = generation + 1;
}
public bool Equals(JobHandle other)
{
return _id == other._id && _generation == other._generation;
}
public override bool Equals(object? obj)
{
return obj is JobHandle handle && Equals(handle);
}
public override int GetHashCode()
{
return HashCode.Combine(_id, _generation);
}
public override string ToString()
{
return IsValid ? $"JobHandle({_id}, {_generation})" : "JobHandle(Invalid)";
}
public static bool operator ==(JobHandle left, JobHandle right)
{
return left.Equals(right);
}
public static bool operator !=(JobHandle left, JobHandle right)
{
return !(left == right);
}
}