当我们在开发网络游戏客户端时经常会(肯定会)开一个线程负责接收,发送网络消息,这时我们必然会碰到一些问题如: 在一些对战列表中随时有玩家上下线,这时我们应该会涉及UI线程(主线程)和 网络线程的同步问题: 如果直接在网络线程中获得数据后直接使用
当我们在开发网络游戏客户端时经常会(肯定会)开一个线程负责接收,发送网络消息,这时我们必然会碰到一些问题如:
在一些对战列表中随时有玩家上下线,这时我们应该会涉及UI线程(主线程)和 网络线程的同步问题:
如果直接在网络线程中获得数据后直接使用的话,肯定会出现各种奇怪的问题。所以一个通用的做法是:
用一个变量来判断:m_bFresh
void UserList::visit(void)
{
CCLayer::visit();
if ( m_bFresh ) {
upDataUserList();
}
m_bInGame = true;
}
因为visit 会一直调用所以当判断可以刷新时直接刷就行了。
void UserList::upDataUserList()
{
m_pUserList = NET_MANAGER->getUserList(); 这个是最新的数据
m_pTableView->reloadData();
m_bFresh = !m_bFresh;
}
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号