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

来源:互联网 发布:8051内核的单片机 编辑:程序博客网 时间:2024/06/07 00:09

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


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;

0 0
原创粉丝点击