Изменения

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

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

1501 байт добавлено, 13:11, 28 января 2013
Нет описания правки
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 ==
=== как это работает ===
возвращение множества значений требует только вызова сопрограммы несколько раз.
 
=== Зачем нужно ===
Можно устроить линейный обход по двоичному дереву поиска. Можно использовать генераторы. Например, генерировать простые числа
=== FLS (fiber local storage) ===
=== modules ===
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf
 
Профит от этого будет, например, в улучшении времени компиляции программ и в более понятных ошибках.
=== concepts ===
170
правок

Навигация