Существуют ли в Delphi 2006 - XE новые функции параллельного программирования?

Есть ли в Delphi 2006 - XE новые функции параллельной программирования?

5 ответов

В Delphi XE есть TThread.CreateAnonymousThread, который позволяет просто выполнять фоновые задачи.

Тривиальное демо:

TThread.CreateAnonymousThread(
 procedure begin
 Sleep(10000); // replace with a real workload
 end
).Start;


Минимально в самих выпусках. В Delphi 2009 они добавили поддержку анонимных методов в TThread.Synchronize, а в XE они добавили очередь передачи потоков в Generics.Collections.

Но сообщество внесло некоторые интересные вещи. Например, проверьте OmniThreadLibrary.


IMO - самая мощная и наименее известная функция многопоточности, введенная после Delphi 7, - это TThread.Queue. Например, вместо

Synchronize(
 procedure
 begin
 Form1.Memo1.Lines.Add(‘Begin Execution’);
 end);

вы можете использовать

Queue(
 procedure
 begin
 Form1.Memo1.Lines.Add(‘Begin Execution’);
 end);

TThread.Queue является альтернативой TThread.Synchronize, который позволяет продолжить рабочий поток без ожидания (при вызове Synchronize call рабочий поток ждет, пока основной поток завершит выполнение синхронизированного кода) - действительно приятная функция, которая может использоваться в качестве замены для обработки пользовательских сообщений с помощью PostMessage.


С 2010 года можно назвать имена потоков XE, хотя это видно только в отладчике (не в файле sysinternals вроде procesxp)


В настоящее время нет многоядерных процессоров, даже если в многопотоковых программах есть коды. проблема блокировки и разблокировки - вот почему

  • диспетчер памяти. это лучше, чем в прошлом.
  • строка - количество ссылок
  • - это счетчик ссылок

Приветствия

licensed under cc by-sa 3.0 with attribution.