ПК
Size: a a a
ПК
LA
m
write_x
read_x_then_y
write_y
read_y_then_x
read_x_then_y
не будет инкрементить.LA
write_x
read_x_then_y
write_y
read_y_then_x
read_x_then_y
не будет инкрементить.join()
-а в этой книге некорректно. join()
был именно таким, никакой гонки не было бы и запись true в обе переменные произошла бы до чтения. Впрочем, да, спишем всё на гонкуПК
join()
-а в этой книге некорректно. join()
был именно таким, никакой гонки не было бы и запись true в обе переменные произошла бы до чтения. Впрочем, да, спишем всё на гонкуПК
std::thread
при выходе из скоупа"ПК
S
std::type_index
.std::type_index
нельзя, он AFAIK только в 11ом появился)typeid()
тоже не работает)template<typename T> struct TypeInfo { static void get() {} };
.__PRETTY_FUNCTION__
который сгенерит строку для нее + адрес на эту строку. AFAIK именно этот трюк используется в boost:typeindex
для ctti.ПК
std::type_index
.std::type_index
нельзя, он AFAIK только в 11ом появился)typeid()
тоже не работает)template<typename T> struct TypeInfo { static void get() {} };
.__PRETTY_FUNCTION__
который сгенерит строку для нее + адрес на эту строку. AFAIK именно этот трюк используется в boost:typeindex
для ctti.S
ПК
ПК
ПК
ПК
ПК
AK
std::type_index
.std::type_index
нельзя, он AFAIK только в 11ом появился)typeid()
тоже не работает)template<typename T> struct TypeInfo { static void get() {} };
.__PRETTY_FUNCTION__
который сгенерит строку для нее + адрес на эту строку. AFAIK именно этот трюк используется в boost:typeindex
для ctti.S
std::any
в gcc - там именно такой подход и используется в кишках std::any_cast
. У каждого типа есть статический метод _S_manage
, каждый std::any
хранит его как _M_manager
, в кишках std::any_cast
они сравниваются.S
getTypeInfo<T>()
он увеличивается и сохраняется в другую статическую переменную для этого T
S
ПК
std::any
в gcc - там именно такой подход и используется в кишках std::any_cast
. У каждого типа есть статический метод _S_manage
, каждый std::any
хранит его как _M_manager
, в кишках std::any_cast
они сравниваются.