Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 14:48   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Synchronize, Критические секции, другие варианты, что лучше для синхронизации потоков?

Привет!

Собственно вся суть вопроса в заголовке.

Какой самый надежный способ синхронизации потоков?
bilibian вне форума Ответить с цитированием
Старый 03.03.2014, 15:02   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

зависит от архитектуры приложения.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2014, 15:04   #3
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
зависит от архитектуры приложения.
Ну, я пробовал Synchronize и критические секции, разницы вообще никакой не заметил.
bilibian вне форума Ответить с цитированием
Старый 03.03.2014, 15:05   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а её и нет по сути, синхрониз работает на основе крит секций.

только синхрониз нужен ради обращения к ГУИ, а не защиты какого иного ресурса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2014, 15:50   #5
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Крит секциями в коде удобнее использовать, так как требуется поместить нужный код между входом и выходом, а в случае с синхрониз, нужно выносить код для синхронизации в отдельный метод.
bilibian вне форума Ответить с цитированием
Старый 03.03.2014, 16:18   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от bilibian Посмотреть сообщение
Крит секциями в коде удобнее использовать, так как требуется поместить нужный код между входом и выходом, а в случае с синхрониз, нужно выносить код для синхронизации в отдельный метод.
если не старая делфя то можно прямо в коде синхрониз объявить анонимный метод по месту.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2014, 17:42   #7
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если не старая делфя то можно прямо в коде синхрониз объявить анонимный метод по месту.
Можно примерчик?
bilibian вне форума Ответить с цитированием
Старый 03.03.2014, 19:08   #8
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
Восклицание

Цитата:
Сообщение от bilibian Посмотреть сообщение
Крит секциями в коде удобнее использовать, так как требуется поместить нужный код между входом и выходом, а в случае с синхрониз, нужно выносить код для синхронизации в отдельный метод.
Даладно

Код:
Synchonize(procedure begin ShowMwssage('123'); end);
STRELOK-2007 вне форума Ответить с цитированием
Старый 03.03.2014, 19:53   #9
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

STRELOK-2007, окей. А если код больше одной строки?
bilibian вне форума Ответить с цитированием
Старый 03.03.2014, 20:31   #10
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

Синхронизация эта такая вещь, в которую не стоит запихивать весь код Windows. Одной строки почти всегда достаточно.
STRELOK-2007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Критические секции или события? denis_gidin Общие вопросы Delphi 4 19.01.2013 11:33
Критические секции tcriticalsection Dеlphi Общие вопросы Delphi 5 11.10.2011 19:45
Критические секции coNsept Общие вопросы C/C++ 7 09.09.2011 00:54
Критические секции в Linux Sparky Помощь студентам 2 28.05.2010 08:33
Критические секции Altera Общие вопросы Delphi 2 25.12.2009 10:45