Здравствуйте, Nikе, Вы писали:
N>Я один раз работал в Яндексе, но собеседований не проходил, кроме как личной беседы с Воложем. Возможно могу ещё раз устроиться, и тоже без собеседований, т.к. судя по тому, что слышал — врядли их пройду.
Здравствуйте, chaotic-kotik, Вы писали:
DI>>Вопрос звучал так: "Как средствами стандартной библиотеки С++ сделать дед лок потока". Буду очень благодарен, если скажешь, как на этот вопрос ответить правильно.
CK>
CK>std::mutex m;
CK>std::condition_variable cv;
CK>std::unique_lock<std::mutex> lk(m);
CK>cv.wait(lk, []{return false;});
CK>
N>Я один раз работал в Яндексе, но собеседований не проходил, кроме как личной беседы с Воложем. Возможно могу ещё раз устроиться, и тоже без собеседований, т.к. судя по тому, что слышал — врядли их пройду.
Здравствуйте, Denis Ivlev, Вы писали:
CK>>spurious awakenings тебе никто не гарантирует
DI>Не так, мне никто не гарантирует их отсутствия, поэтому твой код может работать, а может и нет, как и второй лок на мютексе в том же потоке.
второй лок на мьютексе это UB и это прописано в стандарте
мой код не приводит к UB и это deadlock, просто кое-кто любит подушнить
Здравствуйте, chaotic-kotik, Вы писали:
DI>>Не так, мне никто не гарантирует их отсутствия, поэтому твой код может работать, а может и нет, как и второй лок на мютексе в том же потоке.
CK>второй лок на мьютексе это UB и это прописано в стандарте CK>мой код не приводит к UB и это deadlock, просто кое-кто любит подушнить
Но это же не дедлок, в случае спонтанного просыпания поток разблокируется, на это нельзя закладываться. И это не UB в терминах стандарта С++, но вполне себе UB в терминах корректности кода: код может работать так как задумывалось, а может и нет. Ну это просто объективный факт, я честно не понимаю о чем тут спорить
Здравствуйте, Denis Ivlev, Вы писали:
DI>Но это же не дедлок, в случае спонтанного просыпания поток разблокируется, на это нельзя закладываться. И это не UB в терминах стандарта С++, но вполне себе UB в терминах корректности кода: код может работать так как задумывалось, а может и нет. Ну это просто объективный факт, я честно не понимаю о чем тут спорить
ну так первый вариант кода же есть, там не разблокируется
вообще, по условиям задачи есть один поток, в этом случае спонтанные просыпания практически исключены, можешь провести эксперимент, вставить этот код в main и запустить
спонтанные просыпания возникают в активной системе, когда у тебя есть множество потоков и множество вызовов notify и системе выгоднее разбудить всех, нежели трекать кого и в каком порядке следует будить
Здравствуйте, mgu, Вы писали:
mgu>Здравствуйте, jamesq, Вы писали:
J>>Есть community, есть всякие корпоративные фишки вроде столовой. Ты ощущаешь, что жизнь не проходит зря, занимаешься чем-то существенным. Можно получить визитки с громким именем и должностью, и всем их раздавать. Всем становится понятнее, что ты из себя представляешь. Ну и рост по внутренней иерархии.
mgu>А ещё можно получить жёлтые штаны.
mgu>В маленькой компании из 5 человек путь к должности CTO гораздо короче. В большой конторе столовая больше напоминает птицефабрику и заняться чем-то существенным (крепче 12 градусов) не удаётся.
Хаха, CTO! Что из себя он представляет, в вашей компании на 5 человек? Чем занимается, какого масштаба вопросы решает?
Это как главы государств. У нас их в мире больше 200 штук. Только вот значимость и роль президента США и какого-нибудь острова в тихом океане — довольно отличаются, знаешь ли.
Да впрочем если и брать одну страну, но в разное историческое время. Значимость и масштаб фигуры Сталина и нынешнего Путина — несопоставимы.
Здравствуйте, smeeld, Вы писали:
S>Здравствуйте, Nikе, Вы писали:
N>>Я один раз работал в Яндексе, но собеседований не проходил, кроме как личной беседы с Воложем. Возможно могу ещё раз устроиться, и тоже без собеседований, т.к. судя по тому, что слышал — врядли их пройду.
S>Сейчас набИжит Lexey и скажет, что Вы-сказочник.
Там, как известно, ещё сын самого Воложа работает (работал?). Интересно, как он туда устроился? Кто его собеседовал? И на десерт — что думают остальные акционеры Яндекса на этот счет? (как известно, эта компания — не личная вотчина гендиректора).
Здравствуйте, chaotic-kotik, Вы писали:
CK>ну так первый вариант кода же есть, там не разблокируется
Там вечный цикл — это лайвлок.
CK>вообще, по условиям задачи есть один поток, в этом случае спонтанные просыпания практически исключены, можешь провести эксперимент, вставить этот код в main и запустить
Во-первых, в условии задачи не сказано, что поток один, прочти внимательно. Во-вторых, я не буду этого делать, потому как мне никто не гарантирует отсутствие спонтанных просыпаний. И даже если на моей ОС их нет, я не буду писать заранее непереносимый код.
CK>спонтанные просыпания возникают в активной системе, когда у тебя есть множество потоков и множество вызовов notify и системе выгоднее разбудить всех, нежели трекать кого и в каком порядке следует будить
J>Там, как известно, ещё сын самого Воложа работает (работал?). Интересно, как он туда устроился? Кто его собеседовал? И на десерт — что думают остальные акционеры Яндекса на этот счет? (как известно, эта компания — не личная вотчина гендиректора).
Там много "сыночков" работает. Про одного точно скажу, что никаких собеседований он не проходил.
Здравствуйте, chaotic-kotik, Вы писали:
CK>а если я вызову std::this_thread::sleep_for(100500 лет) это будет livelock?
Ну вообще в стандарте про sleep_for SW не упоминаются, поэтому должен быть дедлок. С другой стороны, на практике встречал, что sleep_for SW подвержен, поэтому придется делать лайвлок. Ну и кмк тут момент попахивающий софистикой, согласно определения, дедлок — состояние ожидания чего либо, поэтому все, что мы делали дедлоками не являются, с другой стороны, можем сказать, что мы ждем некого события через 100500 лет. А еще на этом вопросе мы внезапно хорошо продемонстрировали, что докопаться можно и до столба
Здравствуйте, Ночной Смотрящий, Вы писали:
mgu>>В маленькой компании из 5 человек путь к должности CTO гораздо короче.
НС>Вот только СТО в маленькой кнторе и в большой это две очень большие разницы.
Здравствуйте, Nikе, Вы писали:
N>Я один раз работал в Яндексе, но собеседований не проходил, кроме как личной беседы с Воложем. Возможно могу ещё раз устроиться, и тоже без собеседований, т.к. судя по тому, что слышал — врядли их пройду.
Такие собеседования не пройдут и сами интервьюеры.
Здравствуйте, jamesq, Вы писали:
J>Хаха, CTO! Что из себя он представляет, в вашей компании на 5 человек? Чем занимается, какого масштаба вопросы решает? J>Это как главы государств. У нас их в мире больше 200 штук. Только вот значимость и роль президента США и какого-нибудь острова в тихом океане — довольно отличаются, знаешь ли. J>Да впрочем если и брать одну страну, но в разное историческое время. Значимость и масштаб фигуры Сталина и нынешнего Путина — несопоставимы.