Перейти к содержимому

Программирование на Python для тестировщиков
онлайн, начало 23 октября
Тестирование безопасности
онлайн, начало 28 октября
Школа для начинающих тестировщиков
онлайн, начало 22 октября
Автоматизатор мобильных приложений
онлайн, начало 28 октября
Фотография

Как работает блок critical?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 13 декабря 2007 - 07:10

Добрый день,
В руководстве по силктесту есть упоминание про конструкцию critical. Как я поняла, если есть несколько потоков spawn и управляющий поток critical, то как только critical заканчивается, то прерываются и все остальные. Так ли это на самом деле? Если можно, приведите простенький пример, как это работает. Большое спасибо.
  • 0

#2 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 13 декабря 2007 - 08:39

Добрый день,
В руководстве по силктесту есть упоминание про конструкцию critical. Как я поняла, если есть несколько потоков spawn и управляющий поток critical, то как только critical заканчивается, то прерываются и все остальные. Так ли это на самом деле? Если можно, приведите простенький пример, как это работает. Большое спасибо.

Не совсем так. Этот блок является таким же spawn блоком, что и остальные и если вдруг он прервал выполнение, то прерываются остальные потоки, запущенные в параллели с данным. То есть это не управляющий блок, а скорее блок повышенного контроля и особой важности, без выполнения которого остальные блоки не могут или не должны выполняться
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#3 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 13 декабря 2007 - 12:02

народ! :acute: нельзя же просто так читать - нужно когда-то и пробовать! :good:
вкратце - critical секция - это поток, который будет исполняться монопольно. Во время его работы все остальные потоки заморозятся.
кстати - главный код (тот, котрый вне пределов spawn) это тоже поток, почти такой же, как и остальные :clapping:
И насчет эксепшенов в потоках - при распространении эксепшена за пределы блока spawn (т.е. не перехваченный raise/reraise) - убивается данный поток и все остальные вместе с ним.
[-] main ()
		[ ] int i
		[-] spawn
			[-] for i = 1 to 10
				[ ] Print (i,TimeStr())
		[-] spawn
			[ ] Print ("B",TimeStr())
			[ ] Sleep (2)
			[ ] Print ("B",TimeStr())
		[ ] rendezvous
		[ ] Print ("C",TimeStr())
инструкция к коду: 1-запустить в этом виде. 2-поменять второй спавн на критикал и запустить. 3-убрать рандеву (rendezvous) и попробовать без него ;)
  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале