初学boost碰到点问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学boost碰到点问题相关的知识,希望对你有一定的参考价值。

class Test
: public boost::enable_shared_from_this<Test>

public:
Test()

std::cout<<this<<" create"<<std::endl;

~Test()

std::cout<<this<<" destroy"<<std::endl;

;

typedef boost::shared_ptr<Test> TestPtr;

class Container

public:
void add()

TestPtr p(new Test());
list.push_back(p);

void del()

list.pop_back();

private:
std::vector<TestPtr> list;
;

如我所愿的,调用del的时候或者container析构的时候才会destroy。

现在仅仅是把Test换成boost::thread。
void manager::start()

for(std::size_t i = 0; i < thread_count_; i++)

thread_ptr t(new boost::thread(boost::bind(&boost::asio::io_service::run, &service_)));
thread_pool_.push_back(t);



于是效果不一样了,好像出了scope这些thread都析构了一样,但不是,只是单纯的线程都退出了。。。我不想让start阻塞。
下面说临时变量的没仔细看。
TestPtr也是临时变量,但似乎是boost维护了引用计数的原因并没有当场析构,只有在显示调用del或者container析构的时候才析构。

参考技术A thread_ptr t(new boost::thread(boost::bind(&boost::asio::io_service::run, &service_)));
t是临时对象,并且处在for块里,for完了之后t对象就会析构
在最新的c++规范中,for里的临时变量会自动消亡的
建议用new操作符来生成t,而不要用构造函数

一点碰到的基础

 以下是我在简单玩kali时候碰到的一些问题,然后找到的解决办法,能成功解决我当时碰到的问题,如果你有疑问或者碰到不能解决的问题可以在下面评论

################################################
解决不能上网的时候可能用到;其中ping某个网页ping不通,可以使用wget查看一下能不能接收,或者用traceroute看一下
网络设置:
1、配置ip
配置文件:/etc/network/interfaces                          可以用leafpad或者vim打开
配置自动获取ip
auto eth0
iface eth0 inet dhcp

配置静态ip:
auto eth0
iface eth0 inet static                //配置eth0使用默认的静态地址
address 192.168.77.133        //设置eth0的IP地址
netmask 255.255.255.0          //配置eth0的子网掩码
gateway 192.168.77.254        //配置当前主机的默认网关

2、配置dns:
配置文件:/etc/resovl.conf
格式如下:
domain
nameserver 10.10.10.10
nameserver 102.54.16.2

3、重启网络服务
/etc/init.d/networking restart

##################################################
配置更新源:
配置文件:
/etc/apt/sources.list

内容改成其中一个:
#kali官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
#中科大的源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main contrib non-free
deb http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
#阿里云源
deb http://mirrors.aliyun.com/kali sana main non-free contrib
deb http://mirrors.aliyun.com/kali-security/ sana/updates main contrib non-free
deb-src http://mirrors.aliyun.com/kali-security/ sana/updates main contrib non-free

我成功使用的是:
deb http://mirrors.ustc.edu.cn/kali kali-rolling main contrib non-free
或者:
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

 

更新命令:
apt-get update
apt-get upgrade                   
apt-get dist-upgrade            # 大版本更新的时候使用
apt-get clean  清除下载的安装包

apt-get update --fix-missing      # 可能有些没有更新的。使用这个

 



###########################################################
签名无效情况:如下列情况

保证网络ok,在终端执行命令:
apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys ED444FF07D8D0BF6
我是这么解决的。

 

以上是关于初学boost碰到点问题的主要内容,如果未能解决你的问题,请参考以下文章

初学selenium , 碰到个问题定位不到,求助。

仿写一个简单的网站,以及初学前端的一点感悟

单片机初学者编程经常会碰到的问题及处理办法

Auto.js 初学碰到的坑

boost:asio网络库初学之echo服务器客户端实现

boost:asio网络库初学之echo服务器客户端实现