Многопоточная библиотека исполнения Visual FoxPro, VFP9T.dll, обеспечивает разрешение вопросов блокировки процессов, что характерно для библиотеки исполнения Visual FoxPro, VFP9R.dll. С помощью многопоточной библиотеки Visual FoxPro вы можете создавать Серверы типа In-Process, которые обеспечивают исключение ситуаций блокировки выполняемого Кода. Указанная библиотека расположена в подкаталоге: ..\Program Files\Common Files\Microsoft Shared\VFP.

Поскольку многопоточная библиотека исполнения Visual FoxPro предназначена исключительно для Серверов типа In-Process, многие команды и функции, реализующие визуальные компоненты и диалог с Пользователем, отключены в данной Библиотеке.

Поскольку в многопотоковой библиотеке Visual FoxPro не возникает событий Блокировки исполняемого Кода, выполнение длительных процедур (например, печать файла, отчета на принтере) не задерживает выполнение более быстрых процессов, которые могут выполняться параллельно и быстро. Например, при использовании обычной библиотеки исполнения Visual FoxPro, выполнение процедуры Запроса к Базе данных (который выполняется 1 секунду) может ожидать завершения длительного процесса печати сложного Отчета (который может выполняться до 15 минут). При использовании многопоточной библиотеки исполнения Visual FoxPro, описанной выше проблемы не возникает (процессы выполняются параллельно).

Дополнительно к механизмам разрешения проблем блокировки, реализуемым специальной Моделью построения многопоточной библиотеки исполнения Visual FoxPro, реализованы также процедуры разрешения конфликтов при обращении к удаленным Данным, когда для каждого Потока создается специальная изолированная Область, в которую загружаются требуемые данные. При использовании многопоточной библиотеки выполнения Visual FoxPro для каждого экземпляра Класса реализуется отдельная локальная область памяти, в которую загружаются требуемые данные. Это означает, что при объявлении глобальной переменной с помощью команды PUBLIC, эта переменная является актуальной только в рамках текущего Потока; каждый экземпляр соответствующего потока имеет собственную глобальную переменную.

NoteПримечание

Чтение/Запись значений основных Свойств объекта Application (напрмер, AutoYield) имеет глобальный характер для всего Проекта Приложения.

Visual FoxPro обеспечивает функционирование многопоточной библиотеки исполнения модулей Visual FoxPro, которая развертывает несколько конкурирующих процессов автоматизации типа In-Process (.dll) (или Серверов), которые могут успешно выполняться как в одном процессе (потоке), так и изолированно, независимо. Обычная библиотека выполнения модулей Visual FoxPro создает переименованную копию исходной библиотеки для каждого процесса типа In-Process сервера .dll, который выполняется в одном глобальном процессе Visual FoxPro.

Visual FoxPro располагает классом Session, который рекомендуется использовать с параметром OLEPUBLIC при создании серверных классов. Аналогично для Форм, которые располагают свойством DataSession, которое обеспечивает возможность создания закрытого сеанса обработки данных для каждого экземпляра работающего Объекта. Основным преимуществом класса Session является тот факт, что этот класс занимает в памяти значительно меньше места, чем класс формы. Многопоточная библиотека Visual FoxPro автоматически защищает глобальные переменные и пользовательские данные текущего Потока в отдельном локальном хранилище (области памяти), но это относится только для независимых Потоков/Процессов. Объекты, созданные в одном Потоке, реализованном одним сервером .dll, могут иметь доступ к данным другого Объекта. Класс Session позволяет защитить данные только в пределах одного Потока.

С самого начала, многопоточная библиотека выполнения модулей Visual FoxPro была разработана только для поддержки Серверов типа In-Process, поэтому она имеет меньший размер. Многие команды и функции пользовательского интерфейса исключены из библиотеки, включая старые команды типа FoxPro 2.x READ / @...Get/Say. К тому же, такие Дизайнеры, как дизайнер Таблиц или дизайнер Отчетов, которые существуют в стандартной библиотеке выполнения модулей Visual FoxPro, исключены из многопоточной библиотеки. Однако, многопоточная библиотека все еще поддерживает визуальные классы, такие как Форма.

Expand imageСм. также