Cocos2d-x is not thread-safe
来源:互联网 发布:淘宝店铺总销量怎么看 编辑:程序博客网 时间:2024/05/16 00:32
rt,cocos2d-x 不是线程安全的!
在开发一个网络应用的时候,一般会起一个新的线程用于接收服务器端反馈的数据。
不推荐在接收线程中处理接收到的数据,因为可能会引发一些问题,
普遍的做法是把收取到的网络数据抛给主线程做处理。
前次我就遇到了与此相关的问题,在接收线程中我一收到服务器端发过来的数据就做处理了,
(具体来说就是在子线程中为当前场景添加了一个精灵节点)
结果添加的这个精灵竟然没有正常的显示出来!
(经过我多次地测试,找到了一点儿规律:如果精灵所使用的纹理之前有加载过,则能正常显示;反之则显示不正常)
怎么解决这个问题?
接收线程只负责消息的接收,不负责消息的处理。
接收线程将收到的消息派发给主线程进行处理(附带的,OpenGL 也不是线程安全的)。
CCNotificationCenter 和 MTNotificationQueue 能够比较轻松愉快地解决类似的问题,
(在了解这两个东西之前,我一直采用的是 “单例暂存接收到的消息” + “scheduleUpdate持续不断检测” 的方式)
完整的用法目前还不是很了解,有待进一步研究
(总而言之,NotiCenter + NotiQueue 比我所采用的原始的方式是先进了太多了,怎一个爽字了得)。
下面是我在逛论坛的时候看到的,觉得说挺有借鉴价值的
(虽然不太适用于 ccx —— ccx 添加子节点必须在主线程内完成,所以 “处理线程” 是不成立的)
关键是接收和处理哪个更快。
子线程不要既接收又处理,应该分为接收线程和处理线程,
根据接收和处理数据的速度情况分配数量,接收线程和处理线程通过待处理队列来交换信息。
最好做成自适应的,待处理队列增长到一定程度就增加处理线程,减少接收线程;
队列缩减到一定程度就增加接收线程减少处理线程。
用多态来解决不同数据有不同处理的问题。
(橡木疙瘩(u010936098)@CSDN)
- Cocos2d-x is not thread-safe
- what is thread safe
- Is errno thread-safe ?
- Thread safe or not safe Collection
- QPixmap: It is not safe to use pixmaps outside the GUI thread原因
- QPixmap: It is not safe to use pixmaps outside the GUI thread
- QT QPixmap:It is not safe to use Pixmaps outside the GUI thread
- cocos2d-x多线程 创建texture on another thread is forbitten
- gmtime()/localtime() are not thread-safe
- cocos2d-x Program "bash" is not found in PATH
- cocos2d-x Program "bash" is not found in PATH
- cocos2d-x Program "bash" is not found in PATH
- Cocos2d-x:Stencil buffer is not enabled解决方法
- cocos2d-x Program "bash" is not found in PATH
- qt多线程编程出现QPixmap: It is not safe to use pixmaps outside the GUI thread问题
- Thread-safe, Signal-safe
- thread safe
- cocos2d-x thread 1: EXC_BADACCESS
- JSF中h:message 和h:messages 的区别
- HDU 1003 Max Sum(dp,最大连续子序列和)
- mysql 连接报错:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-h
- PowerDesigner连接MySQL,建立逆向工程图解
- 01背包问题
- Cocos2d-x is not thread-safe
- C++ 虚函数表解析
- 进程控制在进程管理中的作用
- thinkphp框架中的(大)文件上传
- Android UI开发详解之ActionBar
- JMX之通过JConsole连接JMXServer管理MBean
- C#中protected用法详解
- hdu 1150 Machine Schedule (经典二分匹配)
- HDU I Hate It