| <?xml version="1.0" encoding="utf-8"?> |
| <!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" |
| "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> |
| <!-- |
| Copyright Douglas Gregor 2001-2004 |
| Copyright Frank Mori Hess 2007-2009 |
| |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| --> |
| <section last-revision="$Date: 2007-06-12 14:01:23 -0400 (Tue, 12 Jun 2007) $" id="signals2.faq"> |
| <title>Frequently Asked Questions</title> |
| |
| <using-namespace name="boost::signals2"/> |
| <using-namespace name="boost"/> |
| |
| <qandaset> |
| <qandaentry> |
| <question> |
| <para>Don't noncopyable signal semantics mean that a class |
| with a signal member will be noncopyable as well?</para> |
| </question> |
| <answer> |
| <para>No. The compiler will not be able to generate a copy |
| constructor or copy assignment operator for your class if it |
| has a signal as a member, but you are free to write your own |
| copy constructor and/or copy assignment operator. Just don't |
| try to copy the signal.</para> |
| </answer> |
| </qandaentry> |
| <qandaentry> |
| <question> |
| <para>Is Boost.Signals2 thread-safe?</para> |
| </question> |
| <answer> |
| <para> |
| Yes, as long as the Mutex template parameter is not set to |
| a fake mutex type like <classname>boost::signals2::dummy_mutex</classname>. |
| Also, if your slots depend on objects which may be destroyed concurrently |
| with signal invocation, you will need to use automatic connection management. |
| That is, the objects will need to be owned by |
| <classname>shared_ptr</classname> and passed to the slot's |
| <methodname alt="signals2::slot::track">track</methodname>() method before the slot is connected. |
| The <classname>signals2::trackable</classname> scheme of automatic connection management |
| is NOT thread-safe, and is only provided to ease porting of single-threaded |
| code from Boost.Signals to Boost.Signals2. |
| </para> |
| <para>See the documentation section on <link linkend="signals2.thread-safety">thread-safety</link> |
| for more information. |
| </para> |
| </answer> |
| </qandaentry> |
| </qandaset> |
| </section> |