回调函数是可以避免臃肿的线程,实现功能的一种方法,
A:将收集满锯木屑的容器 托运走并清空容器
B:锯木 并且收集锯木屑
这个时候就可以回调
B: 1、定义 一个回收锯木屑函数 CallbackType
typedef boost::function<void (const bool &result)> CallbackType;
2、注册 回调函数
void setCallback(const CallbackType & cbk);
A: 调用注册回调函数:
setCallback(boost::bind(&B::callback , this, _1));
B在锯木屑收集满了一次就通知A将锯木屑运走并清空容器,这样就可以实现回调
这里采用boost
boost::function 是对对象指针的对象化封装,是一个函数对象的容器
boost::bind 绑定成员函数,返回函数对象
如果你并不想使用函数成员对象作为回调函数,可以使静态函数或者全局函数作为回调函数。
memcpy :
函数原型 memcpy(void *dest ,const void *src, size_t n);
这里需要注意的是
1、如果dest 和src 是同类型数组 那就算n 个相同类型的 数据
2、如果是不同类型的数据,主要看src 的类型,那就是n 个src 数据类型的数据
否则复制的时候个数会出现错误
如果不想用memcpy 可以用std::copy ,比较通用的是,这个是元素拷贝,不是内存深拷贝
可以将一个float 型数组复制给double数组