Многопоточность в Delphi на основе OmniThreadLibrary
Не скажу, что уже оценил все возможности этой библиотеки, но могу сказать следующее.
Из положительного - удобство применения (минимальные изменения в тексте кода).
Из отрицательного - неполная документация, некоторые баги.
Исходники открытые - Для просмотра ссылки Войдиили Зарегистрируйся
Дружественный сайт - Для просмотра ссылки Войдиили Зарегистрируйся
Теперь что я заметил:
Неверная работа в параллельных потоках в случае обращения к Application.
1) нельзя создавать формы Application.CreateForm - вызывает зависание
2) нельзя использовать даже Application.MessageBox - но можно Winapi.Windows.MessageBox !!
Не скажу, что уже оценил все возможности этой библиотеки, но могу сказать следующее.
Из положительного - удобство применения (минимальные изменения в тексте кода).
Из отрицательного - неполная документация, некоторые баги.
Исходники открытые - Для просмотра ссылки Войди
Дружественный сайт - Для просмотра ссылки Войди
Теперь что я заметил:
Неверная работа в параллельных потоках в случае обращения к Application.
1) нельзя создавать формы Application.CreateForm - вызывает зависание
2) нельзя использовать даже Application.MessageBox - но можно Winapi.Windows.MessageBox !!
Код:
join := Parallel.Join(
procedure (const joinState: IOmniJoinState)
begin
...
end,
procedure (const joinState: IOmniJoinState)
begin
...
// don't use !! Application.MessageBox('Error', 'Error', 0);
MessageBox(0, 'Error', 'Error', 0); // That's the only way
...
end;
end).NoWait.Execute;