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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2011, 22:26   #1
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
Смех Критические секции tcriticalsection

в многопоточном приложении для синхронизации каждый поток должен иметь свой экземпляр объекта tcriticalsection или можно использовать один всеми потоками?
Если помог нажми на весы
Dеlphi вне форума Ответить с цитированием
Старый 10.10.2011, 22:44   #2
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

В своём приложение я выставил счётчик потоков и каждому потоку предостовляется своё поле для работы, т.ч. можно и внутри потока использовать крит. секцию, но смотря что тебе для этого нужно
bulldog5293 вне форума Ответить с цитированием
Старый 10.10.2011, 23:14   #3
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
По умолчанию

у меня потоки используют общие переменные, и данные, и в том месте где они из используют я ставлю в критическую секцию. а сам объект tcriticalsection можно использовать общий 1 на всех или свой, в каждом потоке создавать его?
Если помог нажми на весы
Dеlphi вне форума Ответить с цитированием
Старый 11.10.2011, 08:38   #4
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

если речь идёт о переменной типа CRITICAL_SECTION, то она должна быть одна для всех потоков
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 11.10.2011, 19:02   #5
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Цитата:
у меня потоки используют общие переменные, и данные, и в том месте где они из используют я ставлю в критическую секцию. а сам объект tcriticalsection можно использовать общий 1 на всех или свой, в каждом потоке создавать его?
согласен
Цитата:
если речь идёт о переменной типа CRITICAL_SECTION, то она должна быть одна для всех потоков
несогласен, т.к.
Код:
var
    CS:trtlcriticalsection;
begin
///где-то в коде
CS.Initialize;
CS.Enter;
//то во что хотим впихнуть критическую секцию
CS.Leave;
end;
у меня так всё тип топ пашет, хотя CS глобальна для каждого потока
bulldog5293 вне форума Ответить с цитированием
Старый 11.10.2011, 19:45   #6
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

я говорю про стандартный Win API механизм критических секций. Переменная CRITICAL_SECTION только одна, и InitializeCriticalSection надо вызывать только один раз.
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Критические секции coNsept Общие вопросы C/C++ 7 09.09.2011 00:54
критические точки alex_pm Помощь студентам 1 05.05.2011 00:52
Объекты ожидания в Delphi. Мьютекс, Семафор и Критические секции. OlgaZN Помощь студентам 2 11.06.2010 12:01
Критические секции в Linux Sparky Помощь студентам 2 28.05.2010 08:33
Критические секции Altera Общие вопросы Delphi 2 25.12.2009 10:45