Re[5]: Собеседование в Логике
От: ZergIII  
Дата: 24.09.07 14:05
Оценка:
Здравствуйте, bkat, Вы писали:

B>Спрашивать про отличие списка от вектора и как отсортировать список — это одно.

B>Организация работы удаленных друг от друга команд и организация митингов — это уже совсем иное.

По поводу второго вопроса: просто хотелось посмотреть на опыт работы человека с западными заказчиками, общее здравомыслие и, возможно, его дальнейшие перспективы
На это не был сделан упор, да и потратили то на это 3 мин всего.
Re[5]: Собеседование в Логике
От: ZergIII  
Дата: 24.09.07 14:07
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Все вопросы по "Design patterns" как пример, никак не связано со способностью решать задаси а проверяет только любознательность.


Опять таки, Senior должен еще и уметь объяснить свои мысли. Кроме того, любознательность — то, что делает человека Senior-ом рано или поздно.
Re[7]: Собеседование в Логике
От: ZergIII  
Дата: 24.09.07 14:14
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>P.S. Особенно меня потешают фирмы где всерьез любят buzzwords типа "senior-developer". Да платите мне нормально и называйте хоть сержантом срочных войск


Senior — это позиция, которая предполагает определенный уровень знаний и умений и соответственно определяет роль на которую можно поставить человека на проекте. Можно конечно сказать, что на данную роль нужен человек, который имеет опыт работы от 5 лет, знает С++, шаблоны проектирования, умееет ..., применяет ..., и т.д. и т.п.
А можно просто сказать: нам нужен Senior со специализацией скажем в DSP или еще чем-то. Намного проще и читабельней.

Так что здесь проблема в том, что нет общего между компаниями стандарта кто такой Senior, Developer или Junior. Кроме того, многие компании пытаются "подкупить кандидата" позицией, типа мы тебя берем на Senior Developer но получать ты будешь столько же Вот и получается потом, что на собеседование приходят сеньоры, а уходят джуниоры
Re[6]: Собеседование в Логике
От: messir_kelvin Украина  
Дата: 24.09.07 14:15
Оценка:
Здравствуйте, ZergIII, Вы писали:

M>>Все вопросы по "Design patterns" как пример, никак не связано со способностью решать задаси а проверяет только любознательность.


ZII>Опять таки, Senior должен еще и уметь объяснить свои мысли. Кроме того, любознательность — то, что делает человека Senior-ом рано или поздно.

Уважаемый ZergIII, вы здесь уже неоднократно высказываете свои мысли по поводу того, что должен знать Senior.
Не могли бы вы озвучить так же и ваши мысли о заработной плате, которую должа обеспечить фирмы приглашающая на работы Senior'а с такими скиллами.
И как эта сумма соотносится с суммой, которую готова предложить ваша компания?
Re[6]: Собеседование в Логике
От: minorlogic Украина  
Дата: 24.09.07 14:21
Оценка:
Здравствуйте, ZergIII, Вы писали:

ZII>Опять таки, Senior должен еще и уметь объяснить свои мысли. Кроме того, любознательность — то, что делает человека Senior-ом рано или поздно.


Был бы рад если мотивация вопросов именно такая. Больше встречаю "собеседователей" "как вы не знаете что такое сингелтон ??? ну не...".
За вас рад !
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Собеседование в Логике
От: LuciferMoscow Россия  
Дата: 24.09.07 16:40
Оценка:
Здравствуйте, AntZ, Вы писали:

A>>>-в каких случаях функцтор или функция не инлайнится?

LM>>Вопрос поставил в тупик. Хотя идеи есть.
AZ>Когда внутренний профайлер считает инлайн невыгодным, когда на функцию могут быть указатели, когда так захотел компилер.
Понял. Значит первоначальный вариант про погоду на Марсе был верным

A>>>-почему алгоритм sort не примениним к контейнеру list?

LM>>Блин, неужно random_access_iterator хочет?!
AZ>Ну, можно было и догадаться пузырьком сортировать, если рандома нет!
Вроде так и должно быть.(У list-а есть свой метод sort?)

A>>>-как избежать рейс кондишена при инициализации синглтона

A>>>пришлось объяснять про double-checked locking,
A>>>попутно возникли вопросы про блокировку и мьютексы
LM>>А на некоторых процах не работает
AZ>Обычно volatile помогает. Double check locking обычно используется для улучшения перформанса. Принцип — лучше недолочить, чем перелочить.
На этих нет Если нужно, то линк найду.

A>>>-чем отличается критическая секция от мьютекса

A>>>(это их любимый вопрос -я до сих пор НЕ ЗНАЮ, как внутри работает критическая секция,
A>>>знаю только что она быстрее и ее нельзя шарить между процессами)
LM>>Крит. секция — не объект ядра
AZ>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
Я книгу Рихтера видел

A>>>-абстрактная фабрика, когда применять? попросили нарисовать UML диаграмму,

LM>>УМЛ не нарисую.
AZ>Да UML очень легко рисовать. Поверьте, художественный дар совсем не требуется. Вот Мону Лизу нарисовать гораздо сложнее, а в UML все квадратно-прямоугольное, кроме треугольников наследования.
Я банально нотацию(кроме наследования) не помню.

A>>>-как реализовать глубокое копирование вышеуказанного паттерна, с помощью виртуального конструктора.

LM>>См. предыдущий ответ
AZ>Все просто — надо сделать виртуальный конструктор и реализовать там глубокое копирование.
А может метод Clone?

LM>>P.S. В целом приятное впечатление(хотя возможно это такая подача автора)

AZ>Мало они издевались, мало. Не попросили написать оператор перегрузки постфиксного ++, создать указатель на виртуальную функцию-член с неограниченным количеством параметров, применить паттерн FactoryMethod для уничтожения объектов и написать собственную реализацию мьютекса на вижуал бейсике
Нормально.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[5]: Собеседование в Логике
От: ZergIII  
Дата: 24.09.07 20:18
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

ZII>>А насчет задач — какая из упомянутых здесь на ваш взгляд не проверяет способность человека решать реальные практические задачи?

КЛ>На мой взгляд, Ваши задания сильно оторваны от практики. Мне кажется, на собеседовании надо задавать только те вопросы, ответы на которые могут как-то охарактеризовать кандидата. Т.е. каждый вопрос должен быть некоторым критерием. И если кандидат ему не соответствует (т.е. не отвечает на вопрос), то продолжать собеседование бесполезно.

Хм, ну это жестко, надо быть 100% уверенным в своих критериях, чтобы следовать таким правилам. Вряд ли можно найти кандидата полностью соответствующего требованиям.

КЛ>Какой вывод Вы можете сделать, если кандидат не ответит на Ваш вопрос? Да никакого! Ну, не знает человек, в каких случаях функтор не инлайнится — и что с того?


Всего лишь уровень знания С++ и понимания как он работает.

КЛ>Кроме того, Ваши задачи даны не в той постановке, как они встречаются на практике. Например, человек может зазубрить паттерны и красиво рисовать их UML-диаграммы, но стоит ему столкнуться с задачей, где потребуется Абстрактная Фабрика или Компоновщик, и он предпочтет switch или мешанину из dynamic_cast'ов. Лучшей дайте ему какое-нибудь практическое задание (взятое из Вашей практики) и попросите решить. А затем обсудите с ним решение, а заодно и паттерны. Из решения будет гораздо лучше видно, умеет человек проектировать (хотя бы на микроуровне) или нет. А абстрактные рассуждение ни о чем не говорят.


В целом мысль хорошая и я ее поддерживаю, однако есть но:
Задачу из практики на собеседовании дать затруднительно, это просто займет очень много времени. Буду действительно рад увидеть пример обратного. Для этого подходят тестовые задания, но с ними есть проблемы. Я знаком с задачами на собеседовании в MS, HP и нескольких других славных компаниях. Они тоже не дают задач из практики.
Впрочем, не думаю, что у нас прошел кто-то, кто банально заучил шаблоны и мы этого не заметили. А даже если так — для этого есть испытательный срок.
Re[4]: Собеседование в Логике
От: CreatorCray  
Дата: 25.09.07 06:59
Оценка: +1
Здравствуйте, LuciferMoscow, Вы писали:

AZ>>Когда внутренний профайлер считает инлайн невыгодным, когда на функцию могут быть указатели, когда так захотел компилер.

LM>Понял. Значит первоначальный вариант про погоду на Марсе был верным
Ну, возможно имелось в виду при каких условиях он точно не заинлайнится.

LM>У list-а есть свой метод sort?

Есть.

LM>>>Крит. секция — не объект ядра

AZ>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>Я книгу Рихтера видел
А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.

LM>Я банально нотацию(кроме наследования) не помню.

Аналогичен до безобразия

AZ>>Все просто — надо сделать виртуальный конструктор и реализовать там глубокое копирование.

LM>А может метод Clone?
Виртуальным конструктором как раз и занывают метод клонирования. Дебильное название ИМХО.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Собеседование в Логике
От: dr.Chaos Россия Украшения HandMade
Дата: 25.09.07 14:07
Оценка: 1 (1)
Здравствуйте, Awaken, Вы писали:

Эх, ладно... Встряну.

A>-чем функтор лучше функции (в частности, эффективнее ли)

A>-в каких случаях функцтор или функция не инлайнится?

Хм.. Насколько я понимаю сильно от компилятора зависит. Кроме того это вроде как рекомендация компилятору, но функтор встроится вероятнее. Наличие ссылок на функию может повлиять, хотя — хз я не разработчик компиляторов.

A>Design patterns:

A>-что такое синглтон (попросили написать код)
A>-как избежать рейс кондишена при инициализации синглтона

Я бы ответил: не использовать сингтон . Уж лучше за собой через параметры функций таскать, чем иметь потом секс с трудноуловимой и трудно воспроизводимой ошибкой.

A>пришлось объяснять про double-checked locking,

A>попутно возникли вопросы про блокировку и мьютексы

A>далее были вопросы по менеджерским качествам:

A>-как организовать работу удаленных друг от друга команд
A>-какое взаимодействие когда использовать (почта, телефон, IM)
A>-как организовывать митинги, сколько времени тратить на обсуждения

Вот не пойму, каким боком качества управленца к сеньору . Такие вопросы ИМХО даже тим лида не особо беспокоят, это скорее уровень ПМа.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[5]: Собеседование в Логике
От: LuciferMoscow Россия  
Дата: 25.09.07 16:33
Оценка:
Здравствуйте, CreatorCray, Вы писали:

LM>>У list-а есть свой метод sort?

CC>Есть.
Значит нуно юзать его

LM>>>>Крит. секция — не объект ядра

AZ>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>Я книгу Рихтера видел
CC>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине

AZ>>>Все просто — надо сделать виртуальный конструктор и реализовать там глубокое копирование.

LM>>А может метод Clone?
CC>Виртуальным конструктором как раз и занывают метод клонирования. Дебильное название ИМХО.
ИМХО, нет. Вот оно:

ISomething* CreateSomething(const std::string& strName)
{
    if ( strName == "pig" )
        return new Pig;
        
    if ( strName == "cat" )
        return new Cat;
        
    if ( strName == "xxx" )
        return new BritneySpears;
}
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[2]: Собеседование в Логике
От: AntZ  
Дата: 25.09.07 16:53
Оценка:
A>>-что такое синглтон (попросили написать код)
A>>-как избежать рейс кондишена при инициализации синглтона

DC>Я бы ответил: не использовать сингтон . Уж лучше за собой через параметры функций таскать, чем иметь потом секс с трудноуловимой и трудно воспроизводимой ошибкой.


Это ответ из серии лечения перхоти при помощи гильотины. Очень помогает. Да элементарно, надо в MySingletonClass::GetInstance() встроить критическую секцию или мьютекс, после лока мьютекса проверять, а не создан ли уже объект в соседнем треде.

A>>пришлось объяснять про double-checked locking,

A>>попутно возникли вопросы про блокировку и мьютексы

Абсолютно логично, против рейсов помогают правильные локи.

DC>Вот не пойму, каким боком качества управленца к сеньору . Такие вопросы ИМХО даже тим лида не особо беспокоят, это скорее уровень ПМа.


Ну, они очень любят играть игры в "Синьоров". Сеньер — это всего лишь слово, только некоторые вкладывают в него смысл, как обычный программер, только "в десять раз круче".
Re[6]: Собеседование в Логике
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.09.07 19:30
Оценка:
LM>>>У list-а есть свой метод sort?
CC>>Есть.
LM>Значит нуно юзать его

LM>>>>>Крит. секция — не объект ядра

AZ>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>Я книгу Рихтера видел
CC>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине

Кстати, 2 СС, в "винде" используется не семафор, а евент
Это к вопросу об исходниках ядра, которые, в общем то, к критической секции никакого отношения не имеют.

AZ>>>>Все просто — надо сделать виртуальный конструктор и реализовать там глубокое копирование.

LM>>>А может метод Clone?
CC>>Виртуальным конструктором как раз и занывают метод клонирования. Дебильное название ИМХО.
LM>ИМХО, нет. Вот оно:

LM>
LM>ISomething* CreateSomething(const std::string& strName)
LM>{
LM>    if ( strName == "pig" )
LM>        return new Pig;
        
LM>    if ( strName == "cat" )
LM>        return new Cat;
        
LM>    if ( strName == "xxx" )
LM>        return new BritneySpears;
LM>}
LM>


Нет, это фабрика классов. Виртуальный конструктор — это метод Create мета-класса. Поскольку рефрексии в С++ вообще никаким боком нет, то можно съэмулировать примерно так:
struct CAnyType;
struct CMyType /*: public CAnyType*/;

struct CAnyTypeRef
{
  virtual CAnyType *Create() const;
};

struct CMyTypeRef
{
  virtual CAnyType *Create() const;
/*  virtual CMyType *Create() const; - Must have, but C++ not allow it*/
};

struct CAnyType
{
static CAnyTypeRef *GetRuntimeClass() const;
};

Самая засада в том, что каждый последующий член иерархии мета-классов должен по идее предоставлять полный набор Create методов, которые позволили бы создать финальный объект из указателя на любой класса иерархии — т.е. перекрывать все Create базовых классов. Ну а поскольку в С++ функции не дискриминируются по возвращаемому значению, то тут придется либо извращаеться, либо тупо забить и заставить мета-классы возвращать только указатель на базу.
Пример — class of в дельфи, CRuntimeClass в MFC.
А метод Clone — это весьма специфический виртуальный оператор присваивания, паттерн Prototype.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[3]: Собеседование в Логике
От: serg_joker Украина  
Дата: 25.09.07 20:02
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, LuciferMoscow, Вы писали:


A>>>-почему алгоритм sort не примениним к контейнеру list?

LM>>Блин, неужно random_access_iterator хочет?!

M>прикольно если реализация пользует advance

Прикольно, но реализация sort, соответствующая стандарту, должна гарантировать сложность алгоритма n*log(n). Очевидно, что используя advance, таких гарантий дать нельзя. Кроме того, по стандарту sort таки требует RandomAccessIterator. См. ISO/IEC 14882:2003 — пп. 25.3.1.1

PS: Привет, Миша
Re[6]: Собеседование в Логике
От: serg_joker Украина  
Дата: 25.09.07 20:09
Оценка: +1
Здравствуйте, LuciferMoscow, Вы писали:
LM>>>>>Крит. секция — не объект ядра
AZ>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>Я книгу Рихтера видел
CC>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине
Здается мне, бонус может быть достигнут не только на многопроцессорной машине. Если объект синхронизации не занят, то в случае использования объектов ядра в любом случае будет переход в режим ядра, простите за тафталогию(дорогая операция), а в случае критической секции — нет.
Поправьте меня, если ошибаюсь.
Re[7]: Собеседование в Логике
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.09.07 20:23
Оценка: -1
_>Здравствуйте, LuciferMoscow, Вы писали:
LM>>>>>>Крит. секция — не объект ядра
AZ>>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>>Я книгу Рихтера видел
CC>>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине
_>Здается мне, бонус может быть достигнут не только на многопроцессорной машине. Если объект синхронизации не занят, то в случае использования объектов ядра в любом случае будет переход в режим ядра, простите за тафталогию(дорогая операция), а в случае критической секции — нет.
_>Поправьте меня, если ошибаюсь.

Поправим, ошибаетесь. Тут говорится только про критическую секцию. Прочитайте про спинлоки http://gzip.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.asp — как раз они и дают некоторую вероятность обойтись без переключения контекста _только_ в случае многопроцессорной машины.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[3]: Собеседование в Логике
От: bkat  
Дата: 25.09.07 20:30
Оценка:
Здравствуйте, AntZ, Вы писали:

A>>>-что такое синглтон (попросили написать код)

A>>>-как избежать рейс кондишена при инициализации синглтона

DC>>Я бы ответил: не использовать сингтон . Уж лучше за собой через параметры функций таскать, чем иметь потом секс с трудноуловимой и трудно воспроизводимой ошибкой.


AZ>Это ответ из серии лечения перхоти при помощи гильотины. Очень помогает. Да элементарно, надо в MySingletonClass::GetInstance() встроить критическую секцию или мьютекс, после лока мьютекса проверять, а не создан ли уже объект в соседнем треде.


А не покажешь, как это делается?

A>>>пришлось объяснять про double-checked locking,

A>>>попутно возникли вопросы про блокировку и мьютексы

AZ>Абсолютно логично, против рейсов помогают правильные локи.


А вот это читал?
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
Re[8]: Собеседование в Логике
От: serg_joker Украина  
Дата: 25.09.07 21:02
Оценка:
Здравствуйте, Andrew S, Вы писали:

_>>Здравствуйте, LuciferMoscow, Вы писали:

LM>>>>>>>Крит. секция — не объект ядра
AZ>>>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>>>Я книгу Рихтера видел
CC>>>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>>>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине
_>>Здается мне, бонус может быть достигнут не только на многопроцессорной машине. Если объект синхронизации не занят, то в случае использования объектов ядра в любом случае будет переход в режим ядра, простите за тафталогию(дорогая операция), а в случае критической секции — нет.
_>>Поправьте меня, если ошибаюсь.

AS>Поправим, ошибаетесь. Тут говорится только про критическую секцию. Прочитайте про спинлоки http://gzip.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.asp — как раз они и дают некоторую вероятность обойтись без переключения контекста _только_ в случае многопроцессорной машины.

1. Ссылку не вижу
2. Не могу согласиться. Да, если ресурс не может быть занят сразу, то в случае однопроцессорной машины спин-блокировки не происходит и сразу будет переход в режим ядра. Но, если ресурс свободен, то перехода в режим ядра не будет, потому как незачем. В таком случае имеем выигрыш.
Re[9]: Собеседование в Логике
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.09.07 21:13
Оценка:
_>>>Здравствуйте, LuciferMoscow, Вы писали:
LM>>>>>>>>Крит. секция — не объект ядра
AZ>>>>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>>>>Я книгу Рихтера видел
CC>>>>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>>>>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине
_>>>Здается мне, бонус может быть достигнут не только на многопроцессорной машине. Если объект синхронизации не занят, то в случае использования объектов ядра в любом случае будет переход в режим ядра, простите за тафталогию(дорогая операция), а в случае критической секции — нет.
_>>>Поправьте меня, если ошибаюсь.

AS>>Поправим, ошибаетесь. Тут говорится только про критическую секцию. Прочитайте про спинлоки http://gzip.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.asp — как раз они и дают некоторую вероятность обойтись без переключения контекста _только_ в случае многопроцессорной машины.

_>1. Ссылку не вижу

Я тоже. А так? http://www.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.aspx
Автор: Alex Fedotov
Дата: 27.03.04

_>2. Не могу согласиться. Да, если ресурс не может быть занят сразу, то в случае однопроцессорной машины спин-блокировки не происходит и сразу будет переход в режим ядра. Но, если ресурс свободен, то перехода в режим ядра не будет, потому как незачем. В таком случае имеем выигрыш.

Спин-блокировка это совсем не то, что вы думаете. Быстрая проверка на занятость есть и для однопроцессорной критической секции, а спинлок — это совершенно другое. Почитайте еще вот тут — http://www.rsdn.ru/article/baseserv/critsec.xml
Автор(ы): Павел Блудов
Дата: 14.03.2005
В статье рассматриваются аспекты работы с критическими секциями, их внутреннее устройство и способы отладки
.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[10]: Собеседование в Логике
От: serg_joker Украина  
Дата: 25.09.07 22:18
Оценка:
Здравствуйте, Andrew S, Вы писали:

_>>>>Здравствуйте, LuciferMoscow, Вы писали:

LM>>>>>>>>>Крит. секция — не объект ядра
AZ>>>>>>>>А Вы видели исходники ядра? Лучше все-таки сначала их увидеть
LM>>>>>>>Я книгу Рихтера видел
CC>>>>>>А толку. В винде в критической секции используется семафор, который используется если критическая секция уже захвачена.
LM>>>>>Но в начале могут быть спинлоки. Дает бонус на многопроцессорной машине
_>>>>Здается мне, бонус может быть достигнут не только на многопроцессорной машине. Если объект синхронизации не занят, то в случае использования объектов ядра в любом случае будет переход в режим ядра, простите за тафталогию(дорогая операция), а в случае критической секции — нет.
_>>>>Поправьте меня, если ошибаюсь.

AS>>>Поправим, ошибаетесь. Тут говорится только про критическую секцию. Прочитайте про спинлоки http://gzip.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.asp — как раз они и дают некоторую вероятность обойтись без переключения контекста _только_ в случае многопроцессорной машины.

_>>1. Ссылку не вижу

AS>Я тоже. А так? http://www.rsdn.ru/Forum/Info/FAQ.winapi.criticalsection.spin.aspx
Автор: Alex Fedotov
Дата: 27.03.04

Так вижу, спасибо. Обязательно почитаю, но чуть позже.

_>>2. Не могу согласиться. Да, если ресурс не может быть занят сразу, то в случае однопроцессорной машины спин-блокировки не происходит и сразу будет переход в режим ядра. Но, если ресурс свободен, то перехода в режим ядра не будет, потому как незачем. В таком случае имеем выигрыш.


AS>Спин-блокировка это совсем не то, что вы думаете. Быстрая проверка на занятость есть и для однопроцессорной критической секции, а спинлок — это совершенно другое. Почитайте еще вот тут — http://www.rsdn.ru/article/baseserv/critsec.xml
Автор(ы): Павел Блудов
Дата: 14.03.2005
В статье рассматриваются аспекты работы с критическими секциями, их внутреннее устройство и способы отладки
.

И тут почитаю тоже.
Вопрос вот в чем: если все-таки у однопроцессорной критической секции есть быстрая проверка на занятость, то не будет ли в случае незанятого ресурса захват критической секции быстрее, чем объекта ядра ?
Спасибо.
Re[11]: Собеседование в Логике
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.09.07 23:05
Оценка:
_>>>2. Не могу согласиться. Да, если ресурс не может быть занят сразу, то в случае однопроцессорной машины спин-блокировки не происходит и сразу будет переход в режим ядра. Но, если ресурс свободен, то перехода в режим ядра не будет, потому как незачем. В таком случае имеем выигрыш.

AS>>Спин-блокировка это совсем не то, что вы думаете. Быстрая проверка на занятость есть и для однопроцессорной критической секции, а спинлок — это совершенно другое. Почитайте еще вот тут — http://www.rsdn.ru/article/baseserv/critsec.xml
Автор(ы): Павел Блудов
Дата: 14.03.2005
В статье рассматриваются аспекты работы с критическими секциями, их внутреннее устройство и способы отладки
.

_>И тут почитаю тоже.
_>Вопрос вот в чем: если все-таки у однопроцессорной критической секции есть быстрая проверка на занятость, то не будет ли в случае незанятого ресурса захват критической секции быстрее, чем объекта ядра ?
_>Спасибо.

Будет. Но тут говорилось про другое — предназначение спинлока в критической секции. Смысл в том, что на однопроцессорной машине он бесполезен (а точнее, вреден). Поэтому однопроцессорные и многопроцессорные машины помимо разных HAL имеют еще и как минимум разный native рантайм.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.