代码改变世界

随笔分类 -  Boost

Boost noncopyable实现禁止拷贝的类

2017-07-16 13:05 by jiayayao, 508 阅读, 收藏, 编辑
摘要: 在C++中定义一个类,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译期会为我们自动生成这两个函数。但是我们有时又希望禁止拷贝类的实例,这时可以私有化拷贝构造函数和拷贝赋值操作符即可。 Boost库已经提供了一个简单的方案,将设计的类继承自boost::noncopyable即可实现该类不可拷贝。n 阅读全文

使用Boost asio实现异步的TCP/IP通信

2017-01-08 21:23 by jiayayao, 16919 阅读, 收藏, 编辑
摘要: 可以先了解一下Boost asio基本概念,以下是Boost asio实现的异步TCP/IP通信: 服务器: 客户端: 阅读全文

使用Boost asio实现同步的TCP/IP通信

2017-01-08 19:35 by jiayayao, 4987 阅读, 收藏, 编辑
摘要: 可以先了解一下Boost asio基本概念,以下是Boost asio实现的同步TCP/IP通信: 服务器程序部分,如果想保留套接字之后继续通信,可以动态申请socket_type,保存指针,因为socket_type貌似不能拷贝: 客户端: 阅读全文

Boost asio基本概念

2017-01-08 15:36 by jiayayao, 5477 阅读, 收藏, 编辑
摘要: asio库基于操作系统提供的异步机制,采用前摄器模式(Proactor)实现可移植的异步(或同步)IO操作,不需要使用多线程和锁,有效避免多线程编程带来的诸多有害副作用(如竞争,死锁)。 asio封装了操作系统的select、kqueue、poll/epoll、overlapped I/O等机制,实 阅读全文

Boost信号/槽signals2

2017-01-03 20:18 by jiayayao, 10435 阅读, 收藏, 编辑
摘要: 信号槽是Qt框架中一个重要的部分,主要用来解耦一组互相协作的类,使用起来非常方便。项目中有同事引入了第三方的信号槽机制,其实Boost本身就有信号/槽,而且Boost的模块相对来说更稳定。 signals2基于Boost里另一个库signals实现了线程安全的观察者模式。signal中一个比较重要的 阅读全文

Boost条件变量condition_variable_any

2016-12-20 18:06 by jiayayao, 8873 阅读, 收藏, 编辑
摘要: Boost条件变量可以用来实现线程同步,它必须与互斥量配合使用。使用条件变量实现生产者消费者的简单例子如下,需要注意的是cond_put.wait(lock)是在等待条件满足。如果条件不满足,则释放锁,将线程置为waiting状态,继续等待;如果条件满足,则重新获取锁,然后结束wait,继续向下执行 阅读全文

反应器(Reactor)和主动器(Proactor)

2016-12-10 20:20 by jiayayao, 1620 阅读, 收藏, 编辑
摘要: 网络方面用的比较多的库是libevent和boost.asio,两者都是跨平台的。其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的。Reactor和Proactor模式的主要区别就是真正的操作(如读/写)是由谁来完成的,Reactor中需要应用程序自 阅读全文
点击右上角即可分享
微信分享提示