lock()返回一个与该weak指针初始化时的传入的shared指针共享所有权的一个boost::shared_ptr。如果shared指针是空的,那么返回的指针也会是空的。 boost::weak_ptr可以使用的场景为:当某个函数中需要用到某个由shared指针管理的对象,但是该对象的生命周期却不应该取决于该函数本身。这个函数只有在程序中别的地方至少...
通过调用reset(),p中当前引用的对象为自动销毁。 get()返回锚定在智能指针中的对象的地址,该示例取消引用get()返回的地址以将2写入标准输出。 boost::scoped_ptr重载了运算符布尔运算符。如果智能指针包含对对象的引用(即不为空),则运算符布尔运算符将返回true。该示例将false写入标准输出,因为p已通过调用重置重设...
因此,相应的线程被中断并引发boost ::thread_interrupted异常。即使catch处理程序为空,也可以在线程内部正确捕获异常。由于thread()函数在处理程序之后返回,因此线程也会终止。反过来,这将导致程序终止,因为main()正在等待线程终止。 Boost.Thread定义了大约15个中断点,包括sleep_for()。这些中断点使及时中断线程变得容易...
请注意,s()不会直接返回最后一个调用函数的结果。返回类型为boost::optional的对象,取消引用后将返回数字2。触发与任何功能均不相关的信号不会产生任何返回值。因此,在这种情况下,boost::optional允许Boost.Signals2返回一个空对象。第21章介绍了boost::optional。 可以自定义信号,以便相应地处理各个返回值。为此,必...
像常规函数一样通过调用来触发信号。 该函数的签名与作为模板参数传递的签名相匹配。 方括号为空,因为void()不需要任何参数。 调用s会导致触发器,该触发器又执行先前与connect()关联的lambda函数。 例67.1也可以用std::function实现,如例67.2所示。 示例67.2 “Hello,World!” 使用std::function ...