Delphi - Поточная обработка [закрытых] платформ

Я полагаю, вам не хватает «цикла событий».

Попробуйте что-то вроде этого, надеюсь, это поможет.

import sys  
if sys.version_info[0] >= 3:  
    import PySimpleGUI as sg  
else:  
    import PySimpleGUI27 as sg  

layout = [[sg.Text('Your typed chars appear here:'), sg.Text('', key='_OUTPUT_') ],  
          [sg.Input(do_not_clear=True, key='_IN_')],  
          [sg.Button('Show'), sg.Button('Exit')]]  

window = sg.Window('Window Title').Layout(layout)  

while True:                 # Event Loop  
  event, values = window.Read()  
  print(event, values)
  if event is None or event == 'Exit':  
      break  
  if event == 'Show':  
      # change the "output" element to be the value of "input" element  
      window.FindElement('_OUTPUT_').Update(values['_IN_'])

window.Close()
12
задан menjaraz 7 February 2012 в 06:33
поделиться

4 ответа

Согласно предложению Vegar

На основе моих нескольких часов оценки OmniThreadLibrary

Вот некоторые вещи, мне нравится приблизительно он

1) Это просто в использовании

2) Это скрывает большинство деталей о много поточной обработке

3) С несколькими строками кода можно настроить несколько потоков

4) Легко сделать, предают сообщения процесса земле

5) Это все еще активно разработано

14
ответ дан 2 December 2019 в 05:42
поделиться

Не платформа как таковая, но существует AsyncCalls. Его объем отличается от OmniThreadLibrary, но он поддерживает более старые версии Delphi также.

7
ответ дан 2 December 2019 в 05:42
поделиться

Интернет, Прямой (Инди), содержит IdThread и ориентированные на многопотоковое исполнение типы данных в IdThreadSafe.pas:

* TIdThreadSafeInteger
* TIdThreadSafeBoolean
* TIdThreadSafeString
* TIdThreadSafeStringList 

... и еще немного

Библиотека кода джедая (JCL) также включает классы синхронизации и функции (приблизительно десять классов)

4
ответ дан 2 December 2019 в 05:42
поделиться

В течение последних 10 лет я разрабатывал свой собственный обширный фреймворк потоковой передачи, который также интегрирован с аналогичной архитектурой коммуникационного фреймворка. На данном этапе его можно использовать с Delphi 2005-2007, но скоро он будет доступен для Delphi 2009-2010. Эта среда разработки приложений может использоваться для создания массово распределенных систем, так как она предназначена для обеспечения возможности выполнения любых потоков в любом процессе и использует простой протокол связи потоков, который одинаков, независимо от того, находятся ли потоки в одном процессе или в разных процессах. на разных машинах.

В качестве дополнительной функции у меня есть эта структура, которая теперь работает на C # / Visual Studio, поэтому распределенная система, построенная с использованием этой среды, может иметь сочетание приложений Win32 и .NET, использующих одну и ту же методологию проектирования. Фреймворк можно загрузить с http://www.adug.org.au/downloads/CSIFramework.html

Библиотеки, которые используются моим фреймворком, не так обширны, как должно было быть на сайте ( Я только что изменил формулировку этой страницы, но обновление может занять день или около того). Более того, хотя структура потоковой передачи является его частью. Платформа потоковой обработки построена путем реализации всех потоков как потоковых очередей. «Сообщения», передаваемые между последовательными очередями, на самом деле представляют собой данные, упакованные в универсальный типизированный объект, который позволяет мне передавать абсолютно любые данные, структурированные любым способом между потоками. Я могу передавать сообщения между потоками либо асинхронно, добавляя сообщение, либо синхронно, добавляя сообщение и получая сообщение в ответ. Сами потоки подписываются на другие потоки для получения сообщений, поэтому связь между потоками во время разработки отсутствует.

Эта структура была расширена за счет включения серверов связи и клиентов, а также основного потока графического интерфейса пользователя, чтобы иметь точно такой же обмен сообщениями. интерфейс как многопоточные очереди, поэтому отправка сообщения удаленному процессу, или передавая его в графический интерфейс, использует тот же синтаксис, что и между потоками. Фреймворк спроектирован таким образом, что не требуется вообще ничего знать о многопоточной разработке для построения распределенной системы, развернутой в нескольких процессах и в нескольких потоках.

В структуре есть гораздо больше, чем это и За последние 10 лет я потратил более двух лет на его разработку. Он был успешно развернут в многоуровневой системе мониторинга сигналов тревоги (с использованием более 20 различных классов потоков в трех приложениях), и в настоящее время я создаю распределенную систему в Visual Studio 2008, используя эту структуру.

Короче говоря, если все вам нужен простой фреймворк для многопоточности, тогда это, вероятно, излишнее. Однако, s руководство, которое вы можете загрузить с веб-страницы, которое также включено в загрузку фреймворка, которое дает обзор фреймворка с точки зрения разработчика

  • Сам фреймворк находится в очень активной разработке, и я надеюсь, что в следующем выпуске Delphi чтобы иметь версию, работающую на Win32 (под Delphi), версию .NET (C # / Visual Studio) и версию для Linux (с использованием нового кроссплатформенного компилятора Deplhi)
  • 2
    ответ дан 2 December 2019 в 05:42
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: