Упреждающее многопоточность в Delphi - PullRequest
4 голосов
/ 19 ноября 2010

Я читал о преимущественной многопоточности здесь и здесь .

Есть ли способ сделать это в Delphi и как это сравнить (преимущества и недостатки) к другим методам потоков в Delphi ?

Ответы [ 3 ]

7 голосов
/ 19 ноября 2010

Похоже, что «другие методы», на которые вы ссылаетесь, используют основную возможность потоков в операционной системе, что является преимуществом. Другими словами, выберите тот, который вам удобнее, и он будет преимущественным.

Получение не вытесняющей (иначе говоря, кооперативной) многопоточности требует немного дополнительной работы, обычно путем преобразования потоков в «волокна».

5 голосов
/ 19 ноября 2010

Современные версии Windows являются приоритетными многозадачными операционными системами . Это означает, что все потоки и процессы (где для существования процесса требуется хотя бы один поток выполнения) запланированы и имеют приоритетное выполнение.

Итак, «есть ли способ сделать это в Delphi», есть следующие ответы:

  • Ваше однопоточное приложение Delphi уже предварительно запланировано с другими приложениями
  • Если вы напишите многопоточное приложение Delphi, оно тоже будет. Вам пришлось бы приложить значительные усилия для написания модели без вытеснения , такой как модель кооперативной потоковой обработки, в вашем приложении. Одним из подходов может быть использование сопрограмм ; вот пример использования Delphi 7 .

Лучший ответ: использовать TThread или любой собственный поток Windows или оболочку вокруг них. У вас будет вытесняющая многопоточность.

Все модели в вашей ссылке используют обычные потоки Windows, и я подозреваю, что ваш вопрос означает, что вы путаетесь с различными методами потоков, которые в основном представляют собой методы связи или выполнения задач (рабочие задания, выполняемые в других потоках.) Если в этом случае вы можете либо обновить свой вопрос, либо попросить другого, который ищет объяснения этих моделей.

2 голосов
/ 19 ноября 2010

Вы смотрели на Планирование в пользовательском режиме , которое было представлено в Windows 7. Волокна в основном не работают.На сайте MSDN много информации об этом, и я, кажется, вспомнил несколько видео на 9 канале.

...