Кажется, что мне наконец-то удалось внедрить какую-то резьбу в мою программу Delphi 2009. Если бы был только один способ сделать это, я бы бежал. Но я вижу несколько возможностей.
Может кто-нибудь объяснить, в чем разница между ними и почему я бы выбрал один за другим.
-
Класс TThread в Delphi
-
... любые другие?
Edit:
Я только что прочитал прекрасную статью Габра в выпуске журнала под названием "Четыре способа Создать поток". Вам нужно подписаться на получение контента в журнале, поэтому авторским правом я не могу воспроизвести здесь ничего существенного.
В общем, Gabr описывает разницу между использованием TThreads, прямыми вызовами Windows API, Andy AsyncCalls и его собственной OmniThreadLibrary. В заключение он делает вывод, что:
"Я не говорю, что вам нужно выбрать что-нибудь еще, чем классический способ Delphi (TThread), но все же хорошо знать, какие параметры у вас есть"
Ответ Mghie очень тщательный и предлагает OmniThreadLibrary может быть предпочтительнее. Но меня все еще интересуют все мнения о том, как я (или кто-либо) должен выбрать метод их потоков для их применения.
И вы можете добавить в список:
. 4. Прямые вызовы в Windows API
. 5. Миша Шарретт Распределенная прикладная структура CSI, как было предложено LachlanG в его ответе.
Вывод:
Я, вероятно, собираюсь пойти с OmniThreadLibrary. Мне нравится работа Габра. Я использовал его Profiler GPProfile много лет назад, и теперь я использую его GPStringHash, который на самом деле является частью OTL.
Мое единственное беспокойство может заключаться в его обновлении для работы с обработкой 64-разрядных или Unix/Mac, когда Embarcadero добавляет эту функциональность в Delphi.