<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=Mutex.ExecuteFunctionInSeparateThread</id>
	<title>Mutex.ExecuteFunctionInSeparateThread - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=Mutex.ExecuteFunctionInSeparateThread"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;action=history"/>
	<updated>2026-04-04T09:29:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=5214&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=5214&amp;oldid=prev"/>
		<updated>2026-04-01T09:59:36Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 09:59, 1 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=5213&amp;oldid=prev</id>
		<title>1&gt;Admin at 16:20, 8 January 2026</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=5213&amp;oldid=prev"/>
		<updated>2026-01-08T16:20:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:20, 8 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot; &gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Имя функции (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Имя функции, которую необходимо исполнить&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Имя функции (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Имя функции, которую необходимо исполнить&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** -1 -- выполнять поиск по последовательности функций из стека вызовов, а не искать, используя подчинение функций на момент компиляции. Этот способ предпочтительнее использовать в компилированных функциях, вызываемых из разных мест модуля или из разных модулей, чтобы получить доступ к реальной среде функций, а не к оной на момент компиляции.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 0 (по умолчанию) -- выполнять поиск по всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 0 (по умолчанию) -- выполнять поиск по всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 1 -- выполнять поиск только внутри текущего модуля.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 1 -- выполнять поиск только внутри текущего модуля.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4953&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4953&amp;oldid=prev"/>
		<updated>2025-01-22T06:54:21Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:54, 22 January 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4952&amp;oldid=prev</id>
		<title>1&gt;Admin at 16:53, 30 December 2024</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4952&amp;oldid=prev"/>
		<updated>2024-12-30T16:53:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:53, 30 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot; &gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Функция, исполняемая в отдельном потоке, может вызывать все функции, находящиеся в текущем модуле, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;однако, &lt;/del&gt;она '''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;не &lt;/del&gt;будет иметь &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;доступа&lt;/del&gt;''' к экспортированным переменным этого модуля &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(так как исполнение фактически происходит &lt;/del&gt;в &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;другом модуле)&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Для работы с переменными или значениями из вызвавшего модуля&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;функция &lt;/del&gt;может &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;использовать набор своих аргументов или экспортируемые переменные глобальных модулей&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Функция, исполняемая в отдельном потоке, может вызывать все функции, находящиеся в текущем модуле, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;и также &lt;/ins&gt;она '''будет иметь &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;доступ&lt;/ins&gt;''' к экспортированным переменным этого модуля&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. При использовании внешних переменных &lt;/ins&gt;в &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;отдельном потоке, нужно помнить, что система будет сначала искать по имени локальные переменные, потом экспортируемые переменные текущего модуля и только потом глобальные экспортированные переменные&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Если имена переменных будут совпадать&lt;/ins&gt;, может &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;возникнуть конфликт и неочевидная ошибка&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В отличие от функции [[ExecuteFunction]], для аргументов функции не будет работать признак ''ByRef'', так как вызвавший поток не ожидает завершения выполнения функции и продолжает работать параллельно с новым.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В отличие от функции [[ExecuteFunction]], для аргументов функции не будет работать признак ''ByRef'', так как вызвавший поток не ожидает завершения выполнения функции и продолжает работать параллельно с новым.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Необработанные исключения внутри функции останавливают ее выполнение, но информация об этих исключениях будет поглощена и выведена в лог не будет (отладчик, однако, будет открыт в момент создания исключения, если режим отладки для визуального клиента разрешен).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Необработанные исключения внутри функции останавливают ее выполнение, но информация об этих исключениях будет поглощена и выведена в лог не будет (отладчик, однако, будет открыт в момент создания исключения, если режим отладки для визуального клиента разрешен).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполнение таких функций происходит быстрее, чем вызов новых модулей в отдельных потоках с помощью [[LoadModule]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполнение таких функций происходит быстрее, чем вызов новых модулей в отдельных потоках с помощью [[LoadModule]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, однако, открытые потоки завершаются при завершении основного потока, когда как потоки, открытые [[LoadModule]] независимы&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4260&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4260&amp;oldid=prev"/>
		<updated>2022-03-13T10:10:13Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 10:10, 13 March 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4259&amp;oldid=prev</id>
		<title>1&gt;Admin at 10:09, 30 January 2022</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4259&amp;oldid=prev"/>
		<updated>2022-01-30T10:09:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 10:09, 30 January 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot; &gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения#Объект семафор|Семафор]]}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения#Объект семафор|Семафор]]}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция инициирует исполнение функции с указанным именем в новом подчиненном потоке с заданными аргументами, способ поиска задается вторым аргументом. Если искомая функция не существует, пропущен обязательный аргумент или заданное количество аргументов слишком велико, будет создано исключение. Созданный поток будет автоматически завершен, если выполнение функции завершится (в т.ч. из-за необработанного исключения), либо если основной поток будет завершен. При завершении подчиненного потока, система не ждет полного окончания завершения, так как оно может занять продолжительное время, если функция выполняет внешний вызов OLE и пр., чтобы убедиться, что поток завершен, можно использовать функцию [[Mutex.TerminateThread|TerminateThread]]. Функция может быть вызвана для интерфейса Mutex. Некоторые важные свойства функций, исполняемых в отдельных потоках:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция инициирует исполнение функции с указанным именем в новом подчиненном потоке с заданными аргументами, способ поиска задается вторым аргументом. Если искомая функция не существует, пропущен обязательный аргумент или заданное количество аргументов слишком велико, будет создано исключение. Созданный поток будет автоматически завершен, если выполнение функции завершится (в т.ч. из-за необработанного исключения), либо если основной поток будет завершен. При завершении подчиненного потока, система не ждет полного окончания завершения, так как оно может занять продолжительное время, если функция выполняет внешний вызов OLE и пр., чтобы убедиться, что поток завершен, можно использовать функцию [[Mutex.TerminateThread|TerminateThread&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]. Для того, чтобы определить программно, происходит ли исполнение в режиме подчиненного потока, можно использовать функцию [[IsExecutingInSeparateThread&lt;/ins&gt;]]. Функция может быть вызвана для интерфейса Mutex. Некоторые важные свойства функций, исполняемых в отдельных потоках:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4144&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4144&amp;oldid=prev"/>
		<updated>2021-11-20T17:08:37Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:08, 20 November 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4143&amp;oldid=prev</id>
		<title>1&gt;Admin at 05:51, 27 August 2021</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=4143&amp;oldid=prev"/>
		<updated>2021-08-27T05:51:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 05:51, 27 August 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot; &gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения#Объект семафор|Семафор]]}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения#Объект семафор|Семафор]]}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция инициирует исполнение функции с указанным именем в новом подчиненном потоке с заданными аргументами, способ поиска задается вторым аргументом. Если искомая функция не существует, пропущен обязательный аргумент или заданное количество аргументов слишком велико, будет создано исключение. Созданный поток будет автоматически завершен, если выполнение функции завершится (в т.ч. из-за исключения), либо если основной поток будет завершен. При завершении подчиненного потока, система не ждет полного окончания завершения, так как оно может занять продолжительное время, если функция выполняет внешний вызов OLE и пр., чтобы убедиться, что поток завершен, можно использовать функцию [[Mutex.TerminateThread|TerminateThread]]. Функция может быть вызвана для интерфейса Mutex. Некоторые важные свойства функций, исполняемых в отдельных потоках:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция инициирует исполнение функции с указанным именем в новом подчиненном потоке с заданными аргументами, способ поиска задается вторым аргументом. Если искомая функция не существует, пропущен обязательный аргумент или заданное количество аргументов слишком велико, будет создано исключение. Созданный поток будет автоматически завершен, если выполнение функции завершится (в т.ч. из-за &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;необработанного &lt;/ins&gt;исключения), либо если основной поток будет завершен. При завершении подчиненного потока, система не ждет полного окончания завершения, так как оно может занять продолжительное время, если функция выполняет внешний вызов OLE и пр., чтобы убедиться, что поток завершен, можно использовать функцию [[Mutex.TerminateThread|TerminateThread]]. Функция может быть вызвана для интерфейса Mutex. Некоторые важные свойства функций, исполняемых в отдельных потоках:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Функция, исполняемая в отдельном потоке, может вызывать все функции, находящиеся в текущем модуле, однако, она '''не будет иметь доступа''' к экспортированным переменным этого модуля (так как исполнение фактически происходит в другом модуле). Для работы с переменными или значениями из вызвавшего модуля, функция может использовать набор своих аргументов или экспортируемые переменные глобальных модулей.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Функция, исполняемая в отдельном потоке, может вызывать все функции, находящиеся в текущем модуле, однако, она '''не будет иметь доступа''' к экспортированным переменным этого модуля (так как исполнение фактически происходит в другом модуле). Для работы с переменными или значениями из вызвавшего модуля, функция может использовать набор своих аргументов или экспортируемые переменные глобальных модулей.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В отличие от функции [[ExecuteFunction]], для аргументов функции не будет работать признак ''ByRef'', так как вызвавший поток не ожидает завершения выполнения функции и продолжает работать параллельно с новым.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В отличие от функции [[ExecuteFunction]], для аргументов функции не будет работать признак ''ByRef'', так как вызвавший поток не ожидает завершения выполнения функции и продолжает работать параллельно с новым.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Необработанные исключения внутри функции останавливают ее выполнение, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;однако &lt;/del&gt;информация об этих исключениях будет поглощена и выведена в лог не будет (отладчик, однако, будет открыт в момент создания исключения, если режим отладки для визуального клиента разрешен).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Необработанные исключения внутри функции останавливают ее выполнение, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;но &lt;/ins&gt;информация об этих исключениях будет поглощена и выведена в лог не будет (отладчик, однако, будет открыт в момент создания исключения, если режим отладки для визуального клиента разрешен).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполнение таких функций происходит быстрее, чем вызов новых модулей в отдельных потоках с помощью [[LoadModule]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Исполнение таких функций происходит быстрее, чем вызов новых модулей в отдельных потоках с помощью [[LoadModule]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Grey|Mutex.}}'''ExecuteFunctionInSeparateThread'''(''&amp;lt;Имя функции (STRING)&amp;gt;''{{Optional|,&amp;lt;Глубина поиска (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Аргумент 1&amp;gt;,&amp;lt;Аргумент 2&amp;gt;...}}):''&amp;lt;Указатель на среду функции (MUTEX)&amp;gt;''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Grey|Mutex.}}'''ExecuteFunctionInSeparateThread'''(''&amp;lt;Имя функции (STRING)&amp;gt;''{{Optional|,&amp;lt;Глубина поиска &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;или компилированная функция &lt;/ins&gt;(INT&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, COMPILEDFUNCTION&lt;/ins&gt;)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Аргумент 1&amp;gt;,&amp;lt;Аргумент 2&amp;gt;...}}):''&amp;lt;Указатель на среду функции (MUTEX)&amp;gt;''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Аргументы ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Аргументы ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot; &gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 2 -- выполнять поиск только внутри родительского модуля.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 2 -- выполнять поиск только внутри родительского модуля.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 3..x -- выполнять поиск только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 3..x -- выполнять поиск только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** Объект типа [[Compile|компилированная функция]] -- выполнять поиск функции внутри заданной компилированной функции (только среди функций верхнего уровня).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Аргумент ?&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргументы, передаваемые исполняемой функции&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Аргумент ?&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргументы, передаваемые исполняемой функции&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=1594&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=1594&amp;oldid=prev"/>
		<updated>2021-02-07T06:51:51Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:51, 7 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=1593&amp;oldid=prev</id>
		<title>Admin: /* Примеры */</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Mutex.ExecuteFunctionInSeparateThread&amp;diff=1593&amp;oldid=prev"/>
		<updated>2020-04-18T10:00:16Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Примеры&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=ExecuteFunctionInSeparateThread&lt;br /&gt;
|object=[[Функции общего назначения#Объект семафор|Семафор]]&lt;br /&gt;
|caption=Работа с подчиненными потоками&lt;br /&gt;
|type=1&lt;br /&gt;
|status=2&lt;br /&gt;
|db=0&lt;br /&gt;
|exception=Невозможно превратить в строку, число, неверные параметры вызова, системная ошибка&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Функции общего назначения#Объект семафор|Семафор]]}}&lt;br /&gt;
Функция инициирует исполнение функции с указанным именем в новом подчиненном потоке с заданными аргументами, способ поиска задается вторым аргументом. Если искомая функция не существует, пропущен обязательный аргумент или заданное количество аргументов слишком велико, будет создано исключение. Созданный поток будет автоматически завершен, если выполнение функции завершится (в т.ч. из-за исключения), либо если основной поток будет завершен. При завершении подчиненного потока, система не ждет полного окончания завершения, так как оно может занять продолжительное время, если функция выполняет внешний вызов OLE и пр., чтобы убедиться, что поток завершен, можно использовать функцию [[Mutex.TerminateThread|TerminateThread]]. Функция может быть вызвана для интерфейса Mutex. Некоторые важные свойства функций, исполняемых в отдельных потоках:&lt;br /&gt;
* Если создание такой функции инициировано корневым потоком, функция не будет завершена автоматически и будет находиться в памяти до тех пор, пока клиент не будет закрыт, либо программа не вызовет функцию [[Mutex.TerminateThread|TerminateThread]].&lt;br /&gt;
* Исполняемая функция не обязательно должна быть корневой функцией текущего модуля, возможен, к примеру, вызов функции, подчиненной текущей функции, либо функции родительского или глобального модулей.&lt;br /&gt;
* Функция, исполняемая в отдельном потоке, может вызывать все функции, находящиеся в текущем модуле, однако, она '''не будет иметь доступа''' к экспортированным переменным этого модуля (так как исполнение фактически происходит в другом модуле). Для работы с переменными или значениями из вызвавшего модуля, функция может использовать набор своих аргументов или экспортируемые переменные глобальных модулей.&lt;br /&gt;
* В отличие от функции [[ExecuteFunction]], для аргументов функции не будет работать признак ''ByRef'', так как вызвавший поток не ожидает завершения выполнения функции и продолжает работать параллельно с новым.&lt;br /&gt;
* Необработанные исключения внутри функции останавливают ее выполнение, однако информация об этих исключениях будет поглощена и выведена в лог не будет (отладчик, однако, будет открыт в момент создания исключения, если режим отладки для визуального клиента разрешен).&lt;br /&gt;
* Исполнение таких функций происходит быстрее, чем вызов новых модулей в отдельных потоках с помощью [[LoadModule]].&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{{Grey|Mutex.}}'''ExecuteFunctionInSeparateThread'''(''&amp;lt;Имя функции (STRING)&amp;gt;''{{Optional|,&amp;lt;Глубина поиска (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Аргумент 1&amp;gt;,&amp;lt;Аргумент 2&amp;gt;...}}):''&amp;lt;Указатель на среду функции (MUTEX)&amp;gt;''&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==== Аргументы ====&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Имя функции (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Имя функции, которую необходимо исполнить&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;br /&gt;
** 0 (по умолчанию) -- выполнять поиск по всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;br /&gt;
** 1 -- выполнять поиск только внутри текущего модуля.&lt;br /&gt;
** 2 -- выполнять поиск только внутри родительского модуля.&lt;br /&gt;
** 3..x -- выполнять поиск только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Аргумент ?&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргументы, передаваемые исполняемой функции&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
Возвращает объект семафора, указывающего на новый запущенный поток. В дальнейшем этот объект можно использовать с функциями, типа [[Mutex.TerminateThread|TerminateThread]]. Если поток не удалось запустить, по каким-либо причинам, функция либо вызывает исключение, либо отдает объект, для которого функция [[Mutex.IsThreadActive|IsThreadActive]] возвращает ноль.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Пример выполняет параллельный процесс отправки данных и обновляет индикатор его выполнения&lt;br /&gt;
&lt;br /&gt;
  Function ВыполнитьПроцесс(спДанные)&lt;br /&gt;
    Форма:=спДанные.GetByName(&amp;quot;Форма&amp;quot;);&lt;br /&gt;
    TCP:=спДанные.GetByName(&amp;quot;Соединение&amp;quot;);&lt;br /&gt;
    аСтр:=спДанные.GetByName(&amp;quot;Данные&amp;quot;);&lt;br /&gt;
    аВсего:=Length(аСтр);&lt;br /&gt;
    аОтослано:=0;&lt;br /&gt;
    Фл:=1;&lt;br /&gt;
    //Цикл отсылает данные и обновляет текстовое поле на форме&lt;br /&gt;
    While Length(аСтр)&amp;gt;0 Do&lt;br /&gt;
      аСтр2:=Left(аСтр,1024);&lt;br /&gt;
      аСтр:=Mid(аСтр,1025);&lt;br /&gt;
      Try&lt;br /&gt;
        TCP.SendStrRaw(аСтр2);&lt;br /&gt;
      Except&lt;br /&gt;
        Фл:=0;&lt;br /&gt;
        Break;&lt;br /&gt;
      EndTry;&lt;br /&gt;
      аОтослано:=аОтослано+Length(аСтр2);&lt;br /&gt;
      Форма.оИндикатор.Caption:=&amp;quot;Выполнено: &amp;quot;+Round(аОтослано/аВсего,2)+&amp;quot;%&amp;quot;;&lt;br /&gt;
    EndDo;&lt;br /&gt;
    If Фл Then&lt;br /&gt;
      Форма.оИндикатор.Caption:=&amp;quot;Отправка выполнена успешно!&amp;quot;;&lt;br /&gt;
    Else&lt;br /&gt;
      Форма.оИндикатор.Caption:=&amp;quot;Ошибка при отправке!&amp;quot;;&lt;br /&gt;
    EndIf;&lt;br /&gt;
  EndFunction&lt;br /&gt;
&lt;br /&gt;
//Подготовка данных аСтр, соединение с удаленным сервером TCP&lt;br /&gt;
&lt;br /&gt;
спДанные:=List.Create();&lt;br /&gt;
спДанные.SetByName(&amp;quot;Форма&amp;quot;,Form.ThisForm());&lt;br /&gt;
спДанные.SetByName(&amp;quot;Соединение&amp;quot;,TCP);&lt;br /&gt;
спДанные.SetByName(&amp;quot;Данные&amp;quot;,аСтр);&lt;br /&gt;
Mutex.ExecuteFunctionInSeparateThread(&amp;quot;ВыполнитьПроцесс&amp;quot;,0,спДанные);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>