1. я опубликовал вопрос (о потокобезопасности weak_ptr) несколько дней назад, и у меня есть другой связанный вопрос сейчас. Если я сделаю что-то подобное, будет ли введено условие гонки как g_w в приведенном выше примере? (Моя платформа - ms vs2013)
std::weak_ptr<int> g_w;
void f3()
{
std::shared_ptr<int>l_s3 = g_w.lock(); //2. here will read g_w
if (l_s3)
{
;/.....
}
}
void f4() //f4 run in main thread
{
std::shared_ptr<int> p_s = std::make_shared<int>(1);
g_w = p_s;
std::thread th(f3); // f3 run in the other thread
th.detach();
// 1. p_s destory will motify g_w (write g_w)
}
2. Насколько я знаю, std::shared_ptr/weak_ptr является производным от std::tr1::shared_ptr/weak_ptr, а std::tr1::shared_ptr/weak_ptr — производным от boost::shared_ptr/weak_ptr, есть ли разница в реализации, особенно, в рельефе thread-safe.
p_s
не изменитg_w
. Он не будет писать вg_w
. - person David Schwartz   schedule 13.03.2016