PinnedMemory เป็นโซลูชันข้ามแพลตฟอร์มประสิทธิภาพสูงสำหรับการสร้าง เข้าถึง และจัดการหน่วยความจำที่ปักหมุดและล็อคสำหรับระบบปฏิบัติการ Windows, macOS และ Linux ใน .NET Core มีการปักหมุดหน่วยความจำอัตโนมัติและการล็อคเสริมสำหรับการทำงานที่มีความละเอียดอ่อน ช่วยให้คุณป้องกันการย้ายตำแหน่งการรวบรวมขยะ และนำเสนอประสิทธิภาพที่เพิ่มขึ้นในสถานการณ์การจัดการหน่วยความจำระดับต่ำ
จากพรอมต์คำสั่ง:
dotnet เพิ่มแพ็คเกจ PinnedMemory
ติดตั้งแพ็คเกจ PinnedMemory
คุณยังสามารถค้นหาแพ็คเกจผ่าน NuGet UI หรือเว็บไซต์ของคุณได้:
NuGet: PinnedMemory
การจัดการหน่วยความจำข้ามแพลตฟอร์มสำหรับ Windows, Linux และ macOS
รองรับประเภทดั้งเดิมหลายประเภท (เช่น byte
, int
, float
เป็นต้น)
เสนอการตั้งค่าศูนย์ การล็อค และการปลดล็อคหน่วยความจำเพื่อความปลอดภัยและประสิทธิภาพ
ป้องกันการรวบรวมขยะจากการย้ายหน่วยความจำโดยการปักหมุดอาร์เรย์ในหน่วยความจำ
การโคลนและการรวมอาร์เรย์ที่มีประสิทธิภาพโดยใช้ ArrayPool<T>
ปรับให้เหมาะสมเพื่อประสิทธิภาพด้วยการอินไลน์เชิงรุกและการจัดสรรที่ลดลง
การใช้ (var pin = new PinnedMemory<byte>(new byte[3])){pin[0] = 65;pin[1] = 61;pin[2] = 77;}
การใช้ (var pin = new PinnedMemory<byte>(new byte[3])){pin.Write(0, 65);pin.Write(1, 61);pin.Write(2, 77);}
การใช้ (var pin = new PinnedMemory<byte>(ไบต์ใหม่[] {65, 61, 77}, false)){var byte1 = pin[0];var byte2 = pin[1];var byte3 = pin[2] ;}
การใช้ (var pin = new PinnedMemory<byte>(new byte[] {65, 61, 77}, false)){var byte1 = pin.Read(0);var byte2 = pin.Read(1);var byte3 = พินอ่าน(2);}
การใช้ (var pin = new PinnedMemory<byte>(ไบต์ใหม่[] {65, 61, 77}, false)){var clone = pin.Clone();var clonedArray = clone.ToArray();}
การใช้ (var pin = new PinnedMemory<byte>(new byte[3], zero: true, locked: true))// หน่วยความจำจะเป็นศูนย์และถูกล็อคโดยอัตโนมัติ// ดำเนินการอย่างปลอดภัย}
PinnedMemory
รองรับประเภทดั้งเดิมต่อไปนี้:
sbyte
byte
char
short
ushort
int
uint
long
ulong
float
double
decimal
bool
PinnedMemory (ค่า T[], บูลศูนย์ = จริง, บูลล็อค = จริง, ประเภท SystemType = SystemType.Unknown)
value : อาร์เรย์ที่จะปักหมุดในหน่วยความจำ
ศูนย์ : ไม่จำเป็น หากเป็น true
หน่วยความจำจะเป็นศูนย์หลังจากการจัดสรร
ล็อค : ไม่จำเป็น หากเป็น true
หน่วยความจำจะถูกล็อคใน RAM เพื่อป้องกันเพจ
ประเภท : ไม่จำเป็น ระบุแพลตฟอร์มระบบปฏิบัติการ ( SystemType.Windows
, SystemType.Linux
, SystemType.Osx
) หาก Unknown
ระบบจะตรวจพบโดยอัตโนมัติ
T this[int i] : ตัวสร้างดัชนีสำหรับการเข้าถึงองค์ประกอบในอาร์เรย์ที่ปักหมุดไว้
int length : ส่งกลับความยาวของอาร์เรย์ที่ปักหมุดไว้
T[] Read() : ส่งกลับอาร์เรย์ที่ปักหมุดไว้ทั้งหมด
T Read(int index) : อ่านค่าที่ดัชนีที่ระบุ
void Write(int index, T value) : เขียนค่าที่ดัชนีที่ระบุ
PinnedMemory Clone() : โคลนอาร์เรย์หน่วยความจำที่ปักหมุดไว้และส่งคืนวัตถุ PinnedMemory<T>
ใหม่
T[] ToArray() : ส่งกลับสำเนาของหน่วยความจำที่ปักหมุดเป็นอาร์เรย์
void Dispose() : ปลดปล่อยหน่วยความจำที่ปักหมุดไว้ ทำให้เป็นศูนย์ และปลดล็อคหากถูกล็อค
ห้องสมุดนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT