Thread

쓰레드의 우선순위 또는 인터럽트 허용 여부를 설정합니다. 임시로 모든 타이머를 끌 수도 있습니다.

Thread, SubCommand , Value1, Value2

SubCommand, Value1 그리고 Value2 매개변수는 서로 의존적입니다. 그리고 그 사용법은 아래에 기술합니다.

부-명령어

For SubCommand, specify one of the following:

NoTimers

Prevents interruptions from any timers.

Thread, NoTimers , TrueOrFalse

This sub-command prevents interruptions from any timers until the current thread either ends, executes Thread, NoTimers, false, or is interrupted by another thread that allows timers (in which case timers can interrupt the interrupting thread until it finishes).

If this sub-command is not used in the auto-execute section (top part of the script), all threads start off as interruptible by timers (though the settings of the Interrupt sub-command [below] will still apply). By contrast, if the auto-execute section turns on this sub-command but never turns it off, every newly launched thread (such as a hotkey, custom menu item, or timer) starts off immune to interruptions by timers.

기본 설정에 상관 없이, 스크립트에 쓰레드가 없다면 타이머는 언제나 작동합니다 (단, Pause가 켜진 경우는 예외입니다).

Thread, NoTimersThread, NoTimers, true와 동등합니다. In addition, since TrueOrFalse is an expression, true resolves to 1, and false to 0.

Priority

Changes the priority level of the current thread.

Thread, Priority, Level

Level에 -2147483648부터 2147483647 사이의 정수를 (또는 표현식 가능) 지정하면 현재 쓰레드의 새 우선 순위를 나타낼 수 있습니다. 다른 쓰레드에는 영향을 주지 않습니다. 자세한 것은 쓰레드를 참조하십시오.

Due to its ability to buffer events, the command Critical is generally superior to this sub-command.

On a related note, the OS's priority level for the entire script can be changed via Process Priority. 예를 들어:

Process, Priority,, High

Interrupt

Changes the duration of interruptibility for newly launched threads.

Thread, Interrupt , Duration, LineCount

주의: 이 부-명령어는 아껴서 사용해야 합니다. 왜냐하면 대부분의 스크립트는 기본값에 가깝게 설정할 수록 더 일관성이 있게 수행되기 때문입니다.

기본값으로, 새로 기동된 쓰레드는 15밀리 초 동안(Duration) 또는 1000 스크립트 줄(LineCount) 동안 인터럽트 할 수 없습니다. 쓰레드 우선 순위에 상관이 없습니다. 이 덕분에 쓰레드는 끝낼 기회가 있습니다. 그렇지 않으면 기동되기를 기다리고 있는 또다른 쓰레드에 의하여 즉시 인터럽트 되어 버릴 것입니다 (예를 들어 버퍼 처리된 핫키 또는 실행이 예약되어 있는 일련의 타이머 서브루틴).

Note: Any Duration less than 17 might result in a shorter actual duration or immediate interruption, since the system tick count has a minimum resolution of 10 to 16 milliseconds.

If either parameter is 0, each newly launched thread is immediately interruptible. If either parameter is -1, the thread cannot be interrupted as a result of that parameter. The maximum for both parameters is 2147483647.

This sub-command is global, meaning that all subsequent threads will obey it, even if the sub-command is used somewhere other than the auto-execute section. 그렇지만, 인터럽트 된 쓰레드는 영향을 받지 않습니다. 왜냐하면 인터럽트 불가능 기한이 이미 경과했기 때문입니다. Similarly, the current thread is unaffected except if it is uninterruptible at the time the LineCount parameter is changed, in which case the new LineCount will be in effect for it.

현재 쓰레드가 인터럽트 불가능한 동안에 핫키가 눌리거나 맞춤 메뉴 항목이 선택되면, 그 이벤트는 버퍼 처리됩니다. 다른 말로, 현재 쓰레드가 종료하거나 인터럽트가 가능해지면 기동됩니다. 이에 대한 예외는 현재 쓰레드가 끝나기 전에 인터럽트가 가능해질 때 입니다. 이 때는 버퍼 처리된 이벤트 보다 우선 순위가 더 높습니다; 이 경우 버퍼에 있는 이벤트는 페기됩니다.

이 부-명령에 상관 없이, 쓰레드는 MsgBox, InputBox, FileSelectFile, 또는 FileSelectFolder 대화상자를 보여주는 순간 인터럽트가 가능해집니다.

둘 중 어느 쪽이라도 비워 두면 바뀌는 것을 막을 수 있습니다.

If Critical is specified as the first line of the thread's subroutine or function, the thread starts out uninterruptible and the Interrupt sub-command has no effect. However, this does not apply to bound functions or user-defined function objects.

논평

Due to its greater flexibility and its ability to buffer events, the command Critical is generally more useful than the sub-commands Interrupt and Priority.

Critical, Threads, Hotkey, Menu, SetTimer, Process

예제

현재 쓰레드의 우선 순위를 보통보다 약간 더 높게 만듭니다.

Thread, Priority, 1

새로 기동된 쓰레드마다 즉시 인터럽트 가능하도록 만듭니다.

Thread, Interrupt, 0

우선 순위에 상관 없이 각 쓰레드를 50 ms 또는 2000 줄 이후에 인터럽트 가능하도록 만듭니다.

Thread, Interrupt, 50, 2000