LINUX.ORG.RU
ФорумTalks

И смех, и грех

 


1

3

Посмотрите, к чему приводит вера в авторитет преподавателя: https://toster.ru/q/267058

Человек уверен, что если препод сказал так, то иначе и быть не может... То, что преподаватель — лопух, а аппаратуры при нем нет, может проверить любой.

☆☆☆☆☆
Ответ на: комментарий от Eddy_Em

И это вся гарантия? Т.е. если завтра ему вставят мозг получше и он увидит: 1) ага, mutex залочить нелзья, значит мне не надо соблюдать строгий порядок операций, обращение к &mutex внутри if нету, то я могу смело вызвать unlock сразу после if(!try_lock())
2) вставят еще больше мозгов и он режит: ага, т.е. ты не имеешь права делать unlock, если ты не получил mutex, значит мы выдадим warning и выкинем к чертям собачьим этот unlock

Результат: код поломался.

Почитай Александреску про Double-Checked Singleton. (Это конечно ничего общего кроме «многопоточности» с этим случаем не имеет, но тем не менее). Там забавные примеры войны с компилятором.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Я на такое ни разу не натыкался, иначе знал бы о подобных выкрутасах! А вообще, обычно volatile хватает. Ну и внимательно нужно при работе с openMP за аргументами смотреть. Хотя, вовсю юзаю openMP, полет нормальный. Думал эти фильтры на CUDA еще реализовать, но пока как-то несерьезно: в подавляющем большинстве случаев перенос данных из памяти в память и обратно займет дофигища времени.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

А вообще, обычно volatile хватает

Полюдема с многопоточными приложениями в том, что если ты полагаешься на выражания «должно», «обычно» в сочетании со словом «работает», то с большой вероятностью найдутся такие условия, где твоя прога начнет некорректно работать.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

Почитай Александреску про Double-Checked Singleton. (Это конечно ничего общего кроме «многопоточности» с этим случаем не имеет, но тем не менее). Там забавные примеры войны с компилятором.

кстати, когда проектировали Джаву, в которой double-checked locking не работает, создатели просто написали, что оно ненужно:

There exist a number of common but dubious coding idioms, such as the double-checked locking idiom, that are proposed to allow threads to communicate without synchronization. Almost all such idioms are invalid under the existing semantics, and are expected to remain invalid under the proposed semantics.

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.