KeyLocks
1.0.0
เรียกใช้รหัสด้วยล็อคตามประเภทวัตถุที่แตกต่างกันเช่นสตริงตัวเลขและวันที่
เลือกรหัสล็อคในค่าเฉพาะไม่ใช่ทั่วโลกสำหรับรหัสการดำเนินการทั้งหมด
private static KeyLock<string> _keyLock = new KeyLock<string>();
public void Main()
{
Parallel.Invoke(
() => { UpdateData("entity-123", "First new value"); },
() => { UpdateData("entity-123", "Second new value"); }, // This will await line above
() => { UpdateData("another-entity-456", "Another new value"); },
() => { UpdateData("yet-another-entity-789", "Yet another new value"); });
}
private void UpdateData(string id, string value)
{
_keyLock.RunWithLock(id, () =>
{
// Execute locked code
});
}
วิธีการที่ 1 และ 2 ดำเนินการภายใน Parallel.Invoke ซึ่งกำลังดำเนินการ UpdateData -method จะรอแต่ละคนและไม่ทำงานอย่างง่ายดายในขณะที่อื่น ๆ ทั้งหมดจะทำงานแบบขนาน
ประเภท NameLock เป็นคำสั้น ๆ สำหรับ KeyLock<string>
มันเป็นค่าเริ่มต้นที่จะเป็นตัวพิมพ์ใหญ่ แต่สามารถเปลี่ยนแปลงได้โดยผ่าน StringComparer.InvariantCultureIgnoreCase เป็นตัวสร้างการโต้แย้ง