Как стать автором
Обновить
228
0
Antony Polukhin @antoshkka

Эксперт-разработчик C++ в Яндекс Go

Отправить сообщение
Пожалуйста, распишите хотя бы в комментариях, как [не]работает каждый из примеров и «в чем прикол?».
Спасибо! Нашёл ещё следующее:

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 ()
8.3 SERIALIZING INSTRUCTIONS

The following instructions are memory-ordering instructions, not serializing instructions.
These drain the data memory subsystem. They do not serialize the instruction
execution stream
:*
• Non-privileged memory-ordering instructions — SFENCE, LFENCE, and
MFENCE.
The SFENCE, LFENCE, and MFENCE instructions provide more granularity in controlling
the serialization of memory loads and stores

* LFENCE does provide some guarantees on instruction ordering. It does not execute until all prior
instructions have completed locally, and no later instruction begins execution until LFENCE completes

+8.2.3.8 Locked Instructions Have a Total Order

Итого:
* на AMD пока лучше использовать lock addl $0x0,(%rsp)
* LFENCE в теории может/должен позволять переупорядочивать инструкции (как минимум в одном направлении), но и на Intel пока сделано не особо оптимально. Что оптимальнее sfence/lfence или lock addl $0x0,(%rsp) — из документации непонятно.
* когда процессоры научатся правильно переупорядочивать, sfence/lfence будет оптимальнее.

P.S.: В «кровавых подробностях» к статье, данной TheShade, сравниваются mfence и lock addl $0x0,(%rsp), а не sfence/lfence и lock addl $0x0,(%rsp). Тут есть разница! И как раз из-за этой разницы непонятно будут ли sfence/lfence оптимальнее lock addl $0x0,(%rsp) на Intel.
Немного не верится, т.к. в ядре Linux по возможности используются именно fence.

У вас нет еще одной статьи на тему что быстрее (желательно от производителей CPU), а то пока получается слово Oracle против слова Linux (а последнему я верю чуть больше!).
Поясните пожалуйста, почему используется более тяжелый lock addl $0x0,(%rsp), вместо sfence/lfence? Или sfence/lfence используются когда доступены, просто это не было указано в статье?
Да, именно эти макросы будут не определены (другие макросы вашим методом не обойти).
+ нельзя так писать в заголовочных файлах библиотеки, которая будет использоваться третьими лицами — это может поломать их код.
А можно увидеть этот пример целиком? Больно похоже на ошибку компилятора.
Спасибо! Значит для получения денег из европы именно «Промсвязьбанк» использует услуги банка «Комерц» (который теряет данные счета при пересылке денег). Думал что виноват банк отправитель.

Стоит задуматься об использовании другого банка…
Написал не так давно книгу для того же издательства на тех же условиях. Прошло около трех месяцев с издания книги, а деньги все еще не перечислены даже за первый «майлстоун».

У вас не возникало подобных проблем?
Если используется версия 4 Boost.Thread (выставляется с помощью макроса), то вызовется std::terminate и все приложение навернется. Аналогичная ситуация будет при использовании std::thread вместо boost::thread.

Чтобы std::terminate() не вызывался, надо явно вызывать t.detach()
А можете, как издатель, проконсультировать по поводу электронных книг? Какое соотношение по продажам электронных и печатных версий?
43% получилось из следующих соображений:
13% подоходный налог + ~30% ЕСН (который я по идее должен платить, так как у меня нет работадателя и я фактически работаю на себя)

33%-23% получалось в зависимости от того в какой последовательности, как и из каких налогов я делал налоговые вычеты.

13% — это если не учитывать ЕСН (который в 2013 вроде как отменен/разбит на несколько).
Прошу прощения, имелся в виду IBAN.
В основном корректоры убирали лишние запятые, добавляли «the», просили переформулировать некоторые предложения. А еще человек из Boost (Paul A. Bristow) рассказал, что в современном английском больше не используется shall. Этой информацией стоило бы поделиться с учителями по английскому, которые мне говорили: «Не используйте must! Это очень сильный глагол, старайтесь использовать вместо него shall».

Но как ни странно, на английском писать техническую литературу даже несколько легче, чем на русском. Так уж вышло, что документацию и статьи на английском читаю чаще, и при написании нужные обороты сами запрыгивали в голову. Правда, некоторые обороты запрыгивали с травмами: вместо «Tip of the Iceberg» запрыгнул «Top of the Iceberg» и т.д.
Не могли бы вы сообщить имя банка которым пользуетесь?

Описанное касается пересылки из ? Английского? банка в Промсвязьбанк. Про промежуточные инстранции мне рассказала менеджер в филиале нашего банка. Проблемы возникают из-за того что наши банки, как правило, не имеют ISBN: при проходе платежа между системой с ISBN и российской системой потерялась часть данных о переводе. В результате транзакция была отменена.
Изначально все тексты набирались мной в LibreOffice. Далее эти тексты успешно корректировались в Word корректорами. При этом документ ставился в состояние «запоминать правки», так что когда мне присылали версию на утверждение, все правки были хорошо видны. Проблем при LibreOffice <--> Word не возникало.

Пару раз пытался редактировать документы в Word 2003. Но LibreOffice показался мне более удобным и надежным.

На последних этапах страницы высылались мне в формате PDF, и редактирование шло с помощью Foxit Reader (который, к несчастью, безобразно работает под Linux).

Куски кода тестировал используя IDE QtCreator c GCC-4.7 и Clang-3.0 в режимах С++03 и C++11. MSVC менее требователен к коду, однако некоторые вещи перепроверялись на Windows.
Маркетинг только начался, пока что я видел пару статей на форумах + реклама на сайте издателя.
В первый раз один бы точно не справился. Были бы проблеммы с корректорами, подходом к написанию, картинкам, оформлению и распространению (издательство выложило книгу на большинстве книжных онлайн магазинов). Уже во второй раз можно рассмотреть и вариант Leanpub.
По денежным: гонорар за написание в срок (около 2000 евро) все еще в пути. За продажи приходит раз в квартал, пока про окупаемость ничего сказать не могу. В большом плюсе точно не буду — для этого надо писать книги о том, как стать миллионером.
Думаю издательство использует «print-on-demand», но только не в чистом виде:
Задолго до того как книга была дописана, начался предзаказ. Скорее всего по предзаказу издательство и ориентировалось сколько нужно копий.
+ Предзаказавшие должны были получить книги в срок.
Специально для интересующихся:

N1: svn.boost.org/trac/boost/ticket/9026
N2: svn.boost.org/trac/boost/ticket/7337 (старая)
N3: svn.boost.org/trac/boost/ticket/9027 (разработчик только что исправил и поблагодарил)
N4: svn.boost.org/trac/boost/ticket/8752 (старая)
N5: svn.boost.org/trac/boost/ticket/9028
N6: не ошибка, перед этим в коде выставляется флаг «кидать исключения при сбоях»
N7: как замечено ниже — не ошибка
Огромное вам спасибо за нахождение ошибок.

Вы не могли бы мне скинуть полный отчет по ошибкам в личку (в буст рассылке нет письма об ошибках :( )? Постараемся исправить их до следующего релиза.
Ощутите глубину глубин.

Ощутил. Внушает.

А вы не хотели бы сделать как один из ваших конкурентов (кажется Coverity): выложить ошибки опенсорсных проектов чтобы разработчики могли их поправить. Я после ваших предыдущих постов искал отдельную ссылку ошибок по Boost, но не нашел :(

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность