blob: 7cce31e63c679a13852cd0874149092fead80d87 [file] [log] [blame]
% together/together.tex
% mainfile: ../perfbook.tex
% SPDX-License-Identifier: CC-BY-SA-3.0
\QuickQuizChapter{chp:Putting It All Together}{Putting It All Together}{qqztogether}
%
\Epigraph{You don't learn how to shoot and then learn how to launch
and then learn to do a controlled spin---you learn to
launch-shoot-spin.}{\emph{Ender's Shadow}, Orson Scott Card}
% And the paragraph preceding this is also instructive:
% ``I may be pissed off, but that doesn't mean I can't learn.''
This \lcnamecref{chp:Putting It All Together}
gives some hints on concurrent-programming puzzles.
\Cref{sec:together:Counter Conundrums}
considers counter conundrums,
\cref{sec:together:Refurbish Reference Counting}
refurbishes reference counting,
\cref{sec:together:Hazard-Pointer Helpers}
helps with hazard pointers,
\cref{sec:together:Sequence-Locking Specials}
surmises on sequence-locking specials,
\cref{sec:together:RCU Rescues}
and
reflects on RCU rescues.
Finally,
although the best performance and scalability results from design rather
than after-the-fact micro-optimization, micro-optimization is nevertheless
necessary for the absolute best possible performance and scalability.
Therefore,
\cref{sec:together:Micro-Optimization}
meanders through a few micro-optimizations.
\input{together/count.tex}
\input{together/refcnt.tex}
\input{together/hazptr.tex}
\input{together/seqlock.tex}
\input{together/applyrcu.tex}
\input{together/microopt.tex}
% batching to trade off latency for perf/scale.
\QuickQuizAnswersChp{qqztogether}