1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title>Chapter 35. Boost.Signals2</title> 6<link rel="stylesheet" href="../../doc/src/boostbook.css" type="text/css"> 7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 8<link rel="home" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> 9<link rel="up" href="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)"> 10<link rel="prev" href="ratio/appendices.html" title="Appendices"> 11<link rel="next" href="signals2/tutorial.html" title="Tutorial"> 12</head> 13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 14<table cellpadding="2" width="100%"><tr> 15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td> 16<td align="center"><a href="../../index.html">Home</a></td> 17<td align="center"><a href="../../libs/libraries.htm">Libraries</a></td> 18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 20<td align="center"><a href="../../more/index.htm">More</a></td> 21</tr></table> 22<hr> 23<div class="spirit-nav"> 24<a accesskey="p" href="ratio/appendices.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signals2/tutorial.html"><img src="../../doc/src/images/next.png" alt="Next"></a> 25</div> 26<div class="chapter"> 27<div class="titlepage"><div> 28<div><h2 class="title"> 29<a name="signals2"></a>Chapter 35. Boost.Signals2</h2></div> 30<div><div class="author"><h3 class="author"> 31<span class="firstname">Douglas</span> <span class="surname">Gregor</span> 32</h3></div></div> 33<div><div class="author"><h3 class="author"> 34<span class="firstname">Frank</span> <span class="othername">Mori</span> <span class="surname">Hess</span> 35</h3></div></div> 36<div><p class="copyright">Copyright © 2001-2004 Douglas Gregor</p></div> 37<div><p class="copyright">Copyright © 2007-2009 Frank Mori Hess</p></div> 38<div><div class="legalnotice"> 39<a name="id-1.3.36.1.5"></a><p>Distributed under the Boost 40 Software License, Version 1.0. (See accompanying file 41 <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> 42</div></div> 43</div></div> 44<div class="toc"> 45<p><b>Table of Contents</b></p> 46<dl class="toc"> 47<dt><span class="section"><a href="signals2.html#id-1.3.36.3">Introduction</a></span></dt> 48<dd><dl><dt><span class="section"><a href="signals2.html#id-1.3.36.3.5">Signals2</a></span></dt></dl></dd> 49<dt><span class="section"><a href="signals2/tutorial.html">Tutorial</a></span></dt> 50<dd><dl> 51<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.2">How to Read this Tutorial</a></span></dt> 52<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.3">Hello, World! (Beginner)</a></span></dt> 53<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.4">Calling Multiple Slots</a></span></dt> 54<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.5">Passing Values to and from Slots</a></span></dt> 55<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.6">Connection Management</a></span></dt> 56<dt><span class="section"><a href="signals2/tutorial.html#signals2.tutorial.document-view">Example: Document-View</a></span></dt> 57<dt><span class="section"><a href="signals2/tutorial.html#signals2.tutorial.extended-slot-type">Giving a Slot Access to its Connection (Advanced)</a></span></dt> 58<dt><span class="section"><a href="signals2/tutorial.html#signals2.tutorial.signal-mutex-template-parameter">Changing the <code class="computeroutput">Mutex</code> Type of a Signal (Advanced).</a></span></dt> 59<dt><span class="section"><a href="signals2/tutorial.html#id-1.3.36.4.10">Linking against the Signals2 library</a></span></dt> 60</dl></dd> 61<dt><span class="section"><a href="signals2/examples.html">Example programs</a></span></dt> 62<dd><dl> 63<dt><span class="section"><a href="signals2/examples.html#signals2.examples.misc">Miscellaneous Tutorial Examples</a></span></dt> 64<dt><span class="section"><a href="signals2/examples.html#signals2.examples.document-view">Document-View</a></span></dt> 65<dt><span class="section"><a href="signals2/examples.html#signals2.examples.deconstruct">Postconstructors and Predestructors with <code class="computeroutput">deconstruct()</code></a></span></dt> 66</dl></dd> 67<dt><span class="section"><a href="signals2/reference.html">Reference</a></span></dt> 68<dd><dl> 69<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2_hpp">Header <boost/signals2.hpp></a></span></dt> 70<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.connection_hpp">Header <boost/signals2/connection.hpp></a></span></dt> 71<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.deconstruct_hpp">Header <boost/signals2/deconstruct.hpp></a></span></dt> 72<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.dummy_mutex_hpp">Header <boost/signals2/dummy_mutex.hpp></a></span></dt> 73<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.last_value_hpp">Header <boost/signals2/last_value.hpp></a></span></dt> 74<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.mutex_hpp">Header <boost/signals2/mutex.hpp></a></span></dt> 75<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.optional_last_value_hpp">Header <boost/signals2/optional_last_value.hpp></a></span></dt> 76<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.shared_connection_block_hpp">Header <boost/signals2/shared_connection_block.hpp></a></span></dt> 77<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.signal_hpp">Header <boost/signals2/signal.hpp></a></span></dt> 78<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.signal_base_hpp">Header <boost/signals2/signal_base.hpp></a></span></dt> 79<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.signal_type_hpp">Header <boost/signals2/signal_type.hpp></a></span></dt> 80<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.slot_hpp">Header <boost/signals2/slot.hpp></a></span></dt> 81<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.slot_base_hpp">Header <boost/signals2/slot_base.hpp></a></span></dt> 82<dt><span class="section"><a href="signals2/reference.html#header.boost.signals2.trackable_hpp">Header <boost/signals2/trackable.hpp></a></span></dt> 83</dl></dd> 84<dt><span class="section"><a href="signals2/thread-safety.html">Thread-Safety</a></span></dt> 85<dd><dl> 86<dt><span class="section"><a href="signals2/thread-safety.html#id-1.3.36.7.2">Introduction</a></span></dt> 87<dt><span class="section"><a href="signals2/thread-safety.html#id-1.3.36.7.3">Signals and combiners</a></span></dt> 88<dt><span class="section"><a href="signals2/thread-safety.html#id-1.3.36.7.4">Connections and other classes</a></span></dt> 89</dl></dd> 90<dt><span class="section"><a href="signals2/faq.html">Frequently Asked Questions</a></span></dt> 91<dt><span class="section"><a href="signals2/rationale.html">Design Rationale</a></span></dt> 92<dd><dl> 93<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.2">User-level Connection Management</a></span></dt> 94<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.3">Automatic Connection Management</a></span></dt> 95<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.4"><code class="computeroutput">optional_last_value</code> as the Default Combiner</a></span></dt> 96<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.5">Combiner Interface</a></span></dt> 97<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.6">Connection Interfaces: += operator</a></span></dt> 98<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.7">Signals2 Mutex Classes</a></span></dt> 99<dt><span class="section"><a href="signals2/rationale.html#id-1.3.36.9.8">Comparison with other Signal/Slot implementations</a></span></dt> 100</dl></dd> 101<dt><span class="section"><a href="signals2/api_changes.html">Signals2 API Changes</a></span></dt> 102<dd><dl> 103<dt><span class="section"><a href="signals2/api_changes.html#signals2.porting">Porting from Boost.Signals to Boost.Signals2</a></span></dt> 104<dt><span class="section"><a href="signals2/api_changes.html#signals2.api_history">Signals2 API Development</a></span></dt> 105</dl></dd> 106<dt><span class="section"><a href="signals2/tests.html">Testsuite</a></span></dt> 107<dd><dl><dt><span class="section"><a href="signals2/tests.html#id-1.3.36.11.2">Acceptance tests</a></span></dt></dl></dd> 108</dl> 109</div> 110<div class="section"> 111<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 112<a name="id-1.3.36.3"></a>Introduction</h2></div></div></div> 113<div class="toc"><dl class="toc"><dt><span class="section"><a href="signals2.html#id-1.3.36.3.5">Signals2</a></span></dt></dl></div> 114<p>The Boost.Signals2 library is an implementation of a managed 115 signals and slots system. Signals represent callbacks with multiple 116 targets, and are also called publishers or events in similar 117 systems. Signals are connected to some set of slots, which are 118 callback receivers (also called event targets or subscribers), which 119 are called when the signal is "emitted."</p> 120<p>Signals and slots are managed, in that signals and slots (or, 121 more properly, objects that occur as part of the slots) can track 122 connections and are capable of automatically disconnecting signal/slot 123 connections when either is destroyed. This enables the user to make 124 signal/slot connections without expending a great effort to manage the 125 lifetimes of those connections with regard to the lifetimes of all 126 objects involved.</p> 127<p>When signals are connected to multiple slots, there is a 128 question regarding the relationship between the return values of the 129 slots and the return value of the signals. Boost.Signals2 allows the 130 user to specify the manner in which multiple return values are 131 combined.</p> 132<div class="section"> 133<div class="titlepage"><div><div><h3 class="title"> 134<a name="id-1.3.36.3.5"></a>Signals2</h3></div></div></div> 135<p>This documentation describes a thread-safe variant of the 136 original Boost.Signals library. There have been some changes to 137 the interface to support thread-safety, mostly with respect to 138 automatic connection management. This implementation was written by 139 Frank Mori Hess. Acknowledgements are also due to Timmo Stange, Peter 140 Dimov, and Tony Van Eerd for ideas and feedback, and to Douglas Gregor 141 for the original version of Boost.Signals this effort was based on. 142 </p> 143</div> 144</div> 145</div> 146<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 147<td align="left"><p><small>Last revised: June 12, 2007 at 14:01:23 -0400</small></p></td> 148<td align="right"><div class="copyright-footer"></div></td> 149</tr></table> 150<hr> 151<div class="spirit-nav"> 152<a accesskey="p" href="ratio/appendices.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signals2/tutorial.html"><img src="../../doc/src/images/next.png" alt="Next"></a> 153</div> 154</body> 155</html> 156