Size: a a a

2020 September 22

DS

Dmitry Sokolov in pro.cxx
voodoo
в общем как я понял, без лишней операции не обойтись никак
по моему проверять свой флаг дешевле, чем
read_lock(&listmutex);  
...
read_unlock(&listmutex);
Флаг это ж как повезёт :) если апдейты редкие может и прокатит, а так то вполне может накатить и изменение флага в процессе чтения. В общем гонка это.
источник

DS

Dmitry Sokolov in pro.cxx
voodoo
в общем как я понял, без лишней операции не обойтись никак
по моему проверять свой флаг дешевле, чем
read_lock(&listmutex);  
...
read_unlock(&listmutex);
Условно говоря, это примерно так например: я меняю данные раз в минуту, любой кто взял ссылку ну эти данные более чем минуту назад и до сих пор ею пользуется, мудак. Но это не защита от мудаков.
источник

DS

Dmitry Sokolov in pro.cxx
Ох, и пример то я отвратительный привёл, время тоже же относительно. Правильным оно будет только если атомарно меняется в контексте shared ресурса. А такое время это и есть версия.
источник

I

Ioann_V in pro.cxx
Ребят, у меня для вас, еще один Квиз - вопрос, для тех кто в теме простой. Но имеет кое-что интересное, в описании ответа.
источник

I

Ioann_V in pro.cxx
Bonne nuit! Знаю, что посты стали крайне редкими, а обещанные статьи, все никак не дойдут до публикации. Так происходит потому, что я очень-очень-очень люблю свою работу, о чем не стесняюсь рассказывать публично [https://vk.com/id533333]. Работы сложной, интересной и ответственной очень-очень-очень много, и даже сейчас, на ночь глядя, я работаю в офисе :) Тем не менее, кое-что для вас у меня есть:

Дан такой кусочек C++ кода:

void call_me()
{}

void* ptr_1 = static_cast     <void*>( call_me ); // 1
...
void* ptr_2 = reinterpret_cast<void*>( call_me ); // 2
...
reinterpret_cast<void(*)()>( ptr_2 );
// 3

Определите верное описание происходящего.

UPD: под implementation defined также можно рассматривать conditionally-supported поведение.
источник

I

Ioann_V in pro.cxx
...
Анонимная викторина
40%
1: Compilation error. 2: Implementation defined. 3: Implementation defined.
6%
1: Compiles successfully. 2: Implementation defined. 3: Compilation error.
5%
1: Compilation error. 2: Compilation error. 3: Compilation error.
11%
1: Implementation defined. 2: Implementation defined. 3: Implementation defined.
6%
1: Compiles successfully. 2: Compilation error. 3: Implementation defined.
20%
1: Compiles successfully. 2: Compiles successfully. 3: Compiles successfully.
4%
1: Compiles successfully. 2: Undefined behaviour. 3: Undefined behaviour.
9%
1: Undefined behaviour. 2: Undefined behaviour. 3: Undefined behaviour.
Проголосовало: 101
источник

I

Ioann_V in pro.cxx
Сразу говорю, что ответ у меня в группе уже есть, но если вам интересно - можете ответить, не подглядывая.
источник

ПК

Побитый Кирпич... in pro.cxx
Чё то баян какой то, только вчера это обсуждали
источник

I

Ioann_V in pro.cxx
Побитый Кирпич
Чё то баян какой то, только вчера это обсуждали
Ну это тему я развил же, не думаю, что все успели прочитать. Буду признателен, если ты позволишь этому сообщению побыть на виду, и не станешь продолжать дискуссию про Баян.
источник

d

disba1ancer in pro.cxx
Ioann_V
Bonne nuit! Знаю, что посты стали крайне редкими, а обещанные статьи, все никак не дойдут до публикации. Так происходит потому, что я очень-очень-очень люблю свою работу, о чем не стесняюсь рассказывать публично [https://vk.com/id533333]. Работы сложной, интересной и ответственной очень-очень-очень много, и даже сейчас, на ночь глядя, я работаю в офисе :) Тем не менее, кое-что для вас у меня есть:

Дан такой кусочек C++ кода:

void call_me()
{}

void* ptr_1 = static_cast     <void*>( call_me ); // 1
...
void* ptr_2 = reinterpret_cast<void*>( call_me ); // 2
...
reinterpret_cast<void(*)()>( ptr_2 );
// 3

Определите верное описание происходящего.

UPD: под implementation defined также можно рассматривать conditionally-supported поведение.
А почему 3я строка выглядит как-то неполно?
источник

VS

Vlad Serebrennikov in pro.cxx
disba1ancer
А почему 3я строка выглядит как-то неполно?
а смысл вызывать функцию по получившемуся указателю, если суть вопроса в корректности кастов? или сохранять этот указатель
источник

d

disba1ancer in pro.cxx
Vlad Serebrennikov
а смысл вызывать функцию по получившемуся указателю, если суть вопроса в корректности кастов? или сохранять этот указатель
Ну похоже так и было задумано, да
источник

AT

Andrey T in pro.cxx
Передавать shared_ptr как конст параметр - плохая практика ?
void ZZZ::func( const shared_ptr<RRR> p_val ) {
....
  shared_ptr<RRR> other_val = p_val;
.....
}

что происходит при этом ? Какие есть подводные камни тут ?
кажется что счетчик в shared_ptr может неправильно увеличиваться/уменьшаться
источник

VS

Vladimir SHCHerba in pro.cxx
Это вряд ли.
источник

OZ

Olzhas Zhumabek in pro.cxx
Andrey T
Передавать shared_ptr как конст параметр - плохая практика ?
void ZZZ::func( const shared_ptr<RRR> p_val ) {
....
  shared_ptr<RRR> other_val = p_val;
.....
}

что происходит при этом ? Какие есть подводные камни тут ?
кажется что счетчик в shared_ptr может неправильно увеличиваться/уменьшаться
const объект становится после конструкции. Во время конструкции он не const. Если это была причина волнения
источник

P

Pepe 🐸 in pro.cxx
Ioann_V
Bonne nuit! Знаю, что посты стали крайне редкими, а обещанные статьи, все никак не дойдут до публикации. Так происходит потому, что я очень-очень-очень люблю свою работу, о чем не стесняюсь рассказывать публично [https://vk.com/id533333]. Работы сложной, интересной и ответственной очень-очень-очень много, и даже сейчас, на ночь глядя, я работаю в офисе :) Тем не менее, кое-что для вас у меня есть:

Дан такой кусочек C++ кода:

void call_me()
{}

void* ptr_1 = static_cast     <void*>( call_me ); // 1
...
void* ptr_2 = reinterpret_cast<void*>( call_me ); // 2
...
reinterpret_cast<void(*)()>( ptr_2 );
// 3

Определите верное описание происходящего.

UPD: под implementation defined также можно рассматривать conditionally-supported поведение.
а что значит implementation defined? 1) не скомпилится 2) вроде можно так сделать но не понятен смысл 3) вроде норм

то есть 2) и 3) законно. (насколько помню void* как char* может использоваться
источник

d

disba1ancer in pro.cxx
Pepe 🐸
а что значит implementation defined? 1) не скомпилится 2) вроде можно так сделать но не понятен смысл 3) вроде норм

то есть 2) и 3) законно. (насколько помню void* как char* может использоваться
Только у тебя тут не указатель на данные, а на функцию
источник

P

Pepe 🐸 in pro.cxx
disba1ancer
Только у тебя тут не указатель на данные, а на функцию
я знаю, это к какому пункту вопрос?
источник

d

disba1ancer in pro.cxx
Pepe 🐸
я знаю, это к какому пункту вопрос?
2-3 не совсем законно, вот на что я намекаю
источник

P

Pepe 🐸 in pro.cxx
disba1ancer
2-3 не совсем законно, вот на что я намекаю
ну я сказал что 2 не имеет смысла, но вроде ничего не запрещает так сделать, а 3 кастует как раз к указателю на функцию
источник