用于封装对象以供多线程使用的内置函数。可以从多个线程使用此类对象,而不会导致崩溃。
OutputVar := CriticalObject(Object, lpCriticalSection)函数示例: obj := CriticalObject(MyCriticalObject)
用于存储创建的对象的变量的名称。
现有的Object或者CriticalObject来使用,这也可以是一个指针。
当给出 CriticalObject 时,其 CriticalSection
将被使用,第二个参数将被忽略。
当此参数为空时,将创建并使用新对象。
指向a的指针 CriticalSection 使用。当省略此参数时,将创建新的 CriticalSection,除非在第一个参数中给出 CriticalObject,则将使用其 CriticalSection。
它如何工作:
要从 CriticalObject 检索原始对象,请使用:
object := CriticalObject(CriticalObject,1)
要检索指向 CriticalSection 的指针,请使用:
lpCriticalSection := CriticalObject(CriticalObject,2)
当删除对内部对象的最后一个引用时,CriticalSection 也会被删除。
obj := CriticalObject() ; 创建新的关键对象
Loop, 4 ; 创建 4 个线程。
AhkThread%A_Index% := AhkThread("obj:=CriticalObject(" (&obj) ")`nLoop`nobj[" A_Index "]:= A_Index")
Loop ; 显示对象的当前内容。
ToolTip % obj.1 "`n" obj.2 "`n" obj.3 "`n" obj.4
Esc::ExitApp