假设一个多线程环境和一个(正确同步的)具有一个特定过程的类
procedure SortKeyList (KeyList : TList <Integer>; Inverted : Boolean);
它需要一个键列表并对其进行排序。该过程使用 RTL 快速排序实现 TList.Sort:
KeyList.Sort (TComparer <Integer>.Construct (CompareKeys))
现在解决问题:CompareKeys 必须访问该类的某些成员才能对列表进行排序(这就是该类的重点)。但是 RTL 要求 CompareKeys 是一个正常的函数。如何以线程安全的方式将数据从对象传递到 CompareKeys 函数?显然,使用全局交换变量不是一种选择,因为它绝不是线程安全的。
有什么想法吗?