Изменения

Перейти к: навигация, поиск

Участник:Qwerty787788/плюсы3сем

2046 байт добавлено, 10:09, 30 декабря 2019
зачем это нужно
signals2 - thread-safe реализация signals
http://habrahabr.ru/post/50812/
 
http://www.rsdn.ru/article/cpp/signals2.xml
== exception safety ==
Надо обязательно ловить ошибки в слотах, ибо иначе при испускании сигнала будут выполняться только те слоты, которые до пустившего исключение.
 
some link: [http://www.stroustrup.com/except.pdf] - слишком много
=== зачем это нужно ===
== multithreading ==
=== зачем это нужно ===
Ну вроде бы очевидно: увеличить скорость выполнения программы. Однако, стоит понимать, что иногда скорость может даже уменьшиться (в интернете есть куча примеров).
Более подробно - это способ задействовать больше аппаратуры для выполнения алгоритма в современных компьютерах, которые хвастаются многоядерностью/многопроцессорностью - так достигается увеличение скорости выполнения. Это очень важно в бизнес-приложениях, а так как программист бизнес-приложений зарабатывает в два раза больше программистов других приложений, просто необходимо. Есть множество задач, которые хорошо делятся на несколько независимых друг от друга. Например, quicksort - после разделения элементов на группы, каждую из них можно сортировать независимо. Но тут важно не переборщить с его использованием, поскольку создание отдельного потока (thread, треда) тоже требует некоторых ресурсов, и сортировать в отдельном треде группы, скажем, по 2 элемента уже очень нерационально, это может как раз замедлить сортировку.
=== понятие race condition ===
http://en.wikipedia.org/wiki/Asynchronous_I/O#Select.28.2Fpoll.29_loops
http://en.wikipedia.org/wiki/IOCP
 
poll — даём список дескрипторов, из которых хотим читать/писать, он ждёт, пока какой-то будет доступен, и возвращает номер. Также можно по маске.
 
select — как я понимаю, он ещё хуже, даём n, он просматривает дескрипторы <= n
 
epoll — улучшение poll, мы можем заранее делать в него add, он хранит очередь из доступных дескрипторов, поэтому побыстрее (видимо, O(1))
 
kqueue — эквивалент epoll, только FreeBSD и ещё где-то
 
IOCP — это в Windows, тоже использует очередь
== remote procedure call ==
http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0 - короче это просто реализация этого принципа. Была нить ее разхреначили на волокна и идут сначала по одному - потом переключились на другой, поделали чето там, вернулись и продолжили идти по первому, например.
=== зачем это нужно ===
Фиберы - это мануально переключаемые потоки. Всегда, когда удобнее вместо синхронизации использовать ручное переключение, применяются фиберы. Также, если потоков много и они однотипны, то целесообразно создавать фиберы, ибо они значительно экономят ресурсы. Можно устроить линейный обход по двоичному дереву поиска. Можно использовать генераторы. Например, генерировать простые числа.
=== coroutines ===
=== modules ===
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf
 
Профит от этого будет, например, в улучшении времени компиляции программ и в более понятных ошибках.
=== concepts ===
[http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3350.html#classstd_1_1range] — думаю, все же это.
 
[https://github.com/ericniebler/range-v3] - рабочий прототип, на основе которого пишется [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4569.pdf Ranges TS]
=== зачем это нужно ===
Наверное, чтобы было удобно писать всякие обобщенные алгоритмы. Ranges позволяют взять какую-то часть содержимого произвольного контейнера и применять к ней какие-то операции с одинаковым интерфейсом.
== encodings ==
[http://www.unicode.org/faq/utf_bom.html ясно и понятно]
=== понятие code unit, понятие code point, combining characters ===
Code unit — минимальная(по длине) битовая комбинация, которая может представлять символ. Для UTF-8 code unit равен 8, символы могут представляться одним или несколькими 8-битными последовательностями. В UTF-16 и UTF-32 code unit по 16 и 32 бита соответственно. [http://www.coderanch.com/t/416952/java/java/Unicode-code-unit-Unicode-code]
7
правок

Навигация