Стандартная С++ задачка на синхронизацию

Тема в разделе "WASM.HEAP", создана пользователем Green_DiCk, 10 окт 2009.

  1. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    wsd
    Не знаю о каких недавних работодателях идёт речь, я взял [url src="http://astbase.ru/anketa/"]отсюда[/url].
    Но вопрос этот стандартный. Точно такой же был в вакансии С++ программиста на Яндеске. Не знаю есть ли сейчас такая вакансия - кому интересно проверьте. Только там кажется требовался программист именно под UNIX. Поэтому и pthread'ы эти. Так что вполне может быть, что вопрос спёрли у Яндекса. И тогда логично было бы предположить, что решение может заключаться в каких-то специфичных юниксовых заморочках, в которых я не силён.
     
  2. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    опа-па. ) как ссылку вставлять?? О_о
     
  3. reversecode

    reversecode Guest

    Публикаций:
    0
    Green_DiCk
    толи в какойто книге толи на rsdn ru уже видел этот кусок кода
     
  4. reversecode

    reversecode Guest

    Публикаций:
    0
    вспомнил это кажись пример из александреску про синлетоны
     
  5. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    урл вставляется так: [url=<>]text[/url]
    а топик отвратителен как и код в нём.
    избегать надо таких ситуаций.
     
  6. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    Все ясно вобщем.
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Green_DiCk
    ага, это они
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Comer_

    Лолшто? Избегать многопоточности, да? :)
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Comer_
    это же С, ты вроде тоже на нем пишешь
     
  10. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    нет
    он имел в ввиду избегать сложных не однозначных ситуаций и по _возможности_
    а ты сразу ругаться
     
  11. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    wsd
    Не вижу ничего сложного или неоднозначного. Классический код для классической многопоточности. Более того, упомянутый Александреску упоминает, что и такого извратства не всегда достаточно для безопасной работы в MT.
     
  12. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Это стандартный для многопоточных архитектур шаблон, называется Double checked locking (http://ru.wikipedia.org/wiki/Double_checked_locking).

    PS Сразу видно, кто есть кто. :)
     
  13. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ^this.

    wsd thanks ,)
     
  14. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    ^this.

    W4FhLF thanks ,)
     
  15. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ^this.

    _DEN_ thanks ,)
     
  16. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Comer_

    Вполне себе нормальная ситуация, если в сторонней либе используется тредсейфная lazy-инициализация тяжелого ресурса.
     
  17. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    отвратительный подход к задаче разделения ресурсов.

    и хватит абстракции, если оно действительно так неизбежно - покажите пример!
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ;)
     
  19. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Может имеется ввиду что initialize_data() инитиализирует mutex ???
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Рихтер всё же советует к разделяемому ресурсу обращаться только через синхронизацию. Конечно вряд ли, но кто знает этот компилятор и программистов. Вдруг заинлайнится функция и будет ненулевое промежуточное значение, тогда другой поток подумает, что иницилизация уже была, хотя она ещё не завершилась.