Есть ли какие-либо новые возможности параллельного программирования в Delphi 2006 - XE? - PullRequest
3 голосов
/ 03 декабря 2010

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

Ответы [ 5 ]

7 голосов
/ 03 декабря 2010

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

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

4 голосов
/ 04 декабря 2010

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

Тривиальная демонстрация:

TThread.CreateAnonymousThread(
  procedure begin
    Sleep(10000); // replace with a real workload
  end
).Start;
4 голосов
/ 04 декабря 2010

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 рабочий поток ожидает, пока основной поток не завершит выполнение синхронизированного кода) - действительно хорошая функция, которая может быть использована в качестве замены для пользовательской обработки сообщений с PostMessage .

1 голос
/ 07 декабря 2010

Начиная с 2010 или XE, можно называть потоки, хотя это видно только в отладчике (например, в sysinternals, например, processxp)

0 голосов
/ 04 декабря 2010

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

  1. менеджер памяти.это лучше, чем в прошлом
  2. строка - счетчик ссылок
  3. интерфейс - счетчик ссылок

Приветствие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...