cocos2dx2.x版本的pthread的一些注意事项

这几天被线程的野指针搞得头都大了,一方面是对于线程的理解不透彻,一方面写代码也不太规范。也是对这几天的一个总结吧。


1.pthread_t必须是静态变量,否则会出现野指针

有可能你这个类退出了,但是进程还在运行,这时候进程ID的内存被释放掉了,但是进程还是要读取这个ID,就会在检查野指针的构造或者析构函数中报错


2.如果需要传值进进程中,最好不要用类似下面的方法传值

tagTableID *TableID = new tagTableID();
TableID->wTableID = ti.at(listView->getCurSelectedIndex()).wTableID;
memset(TableID->szPassword,0,PASS_LEN);
pthread_create(&tid_Host_Acc,NULL,SendAcceptChallenge,(void *)TableID);

因为局部变量会在作用域结束的时候被清除内存,如果这样传入线程内部,无法预料是否会在作用域结束之后,线程还会不会调用这个变量,当然 如果非要这样调用的话,建议是在线程内部这样写,把内存复制一份

tagTableID _TableID = *TableID;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值