Что и в какой последовательности (по степени полезности) посоветуете посмотреть в бусте кроме умных указателей?
И второй вопрос по shared_ptr/weak_ptr. Если я планирую использовать их в многопоточной (но заведомо однопроцессорной) среде, должен-ли я выставлять BOOST_HAS_THREADS (что приведет, как я понимаю, к созданию критической секции на каждый объект — этого, естественно, хотелось бы избежать)? Оборачивать каждое создание/копирование/разрушение указателя в собственную критическую секцию тоже не хотелось бы. С intrusive_ptr вопрос решается использованием InterlockedIncrement/Decrement (Win32) в intrusive_ptr_add_ref/release, а вот с shared_ptr?
Здравствуйте, COFF, Вы писали:
COF>Что и в какой последовательности (по степени полезности) посоветуете посмотреть в бусте кроме умных указателей?
COF>И второй вопрос по shared_ptr/weak_ptr. Если я планирую использовать их в многопоточной (но заведомо однопроцессорной) среде, должен-ли я выставлять BOOST_HAS_THREADS (что приведет, как я понимаю, к созданию критической секции на каждый объект — этого, естественно, хотелось бы избежать)? Оборачивать каждое создание/копирование/разрушение указателя в собственную критическую секцию тоже не хотелось бы. С intrusive_ptr вопрос решается использованием InterlockedIncrement/Decrement (Win32) в intrusive_ptr_add_ref/release, а вот с shared_ptr?
COF>Заранее спасибо!
Какой то вопрос
boost.noncopyable.
Я бы посоветовал не ПОСМОТРЕТЬ именно ПОСМОТРЕТЬ все — что это делает, в чем приемущества-недостатки, а когда встанет необходимость — изучить специфику. Главное знать что есть, когда и какой ценой это применяется. Есть какая-то критическая масса — после некотрого знакомства в Win32 API ты легко сможешь найти нужную. Так же и здесь знать что примерно есть и уметь нарыть. Это задача инжнера
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Здравствуйте, demi, Вы писали:
D>Я бы посоветовал не ПОСМОТРЕТЬ именно ПОСМОТРЕТЬ все — что это делает, в чем приемущества-недостатки, а когда встанет необходимость — изучить специфику. Главное знать что есть, когда и какой ценой это применяется. Есть какая-то критическая масса — после некотрого знакомства в Win32 API ты легко сможешь найти нужную. Так же и здесь знать что примерно есть и уметь нарыть. Это задача инжнера
Проблема, с одной стороны, в том, что не так много свободного времени, поэтому даже посмотреть все на должном уровне сразу не получится. С другой стороны, ясно, что какие-то классы полезнее других — например интеграция с питоном мне пока совсем не нужна И хотелось бы по мере изучения что-то сразу применять в реальных проектах, а для этого надо именно разбираться, смотреть код и т.п. Соответственно, хотелось бы составить своеобразный road-map
Здравствуйте, COFF, Вы писали:
COF>долженл и я выставлять BOOST_HAS_THREADS (что приведет, как я понимаю, к созданию критической секции на каждый объект — этого, естественно, хотелось бы избежать)?
Начиная, кажется, с 1.32, boost::shared_ptr использует Interlocked* (на других платформах другие lock-free-аналоги).
Здравствуйте, Roman Odaisky, Вы писали:
RO>Начиная, кажется, с 1.32, boost::shared_ptr использует Interlocked* (на других платформах другие lock-free-аналоги).
Да, действительно, сейчас посмотрел по коду — используется BOOST_INTERLOCKED_INCREMENT и т.п. Причем, на Win32 они используются всегда — вне зависимости от наличия BOOST_HAS_THREADS. Но в weak_ptr.hpp BOOST_HAS_THREADS используется, получается лучше BOOST_HAS_THREADS выставлять. Понятно, спасибо
Я просто какое-то время назад смотрел — там критические секции использовались.