博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WW多线程和锁
阅读量:5763 次
发布时间:2019-06-18

本文共 580 字,大约阅读时间需要 1 分钟。

问题:

WorldWind中是双线程的,一直忽略了多线程中数据共享,修改数据会产生问题。可是在WW中并没有看到锁的东西。

还有就是动态释放内存的问题。因为采用D3D的C#封装库不可避免涉及COM对象的释放问题,是否会导致内存溢出的问题。

一点分析:

在Update方法中,首先判断渲染对象是否初始化成功 isInitialized,没有成功就初始化数据,初始化主要负责构建顶点数组和索引数组,以及顶点缓存等,接着就将isInitialized设置为true。

虽然执行Update的同时,主线程也在调用Render方法,但是如果isInitialized==false,不会执行渲染的操作。也就是说没有造成初始化过程中构造的顶点缓存的冲突。如果需要重新初始化顶点缓存,只需要将isInitialized设置为false。

Update线程和Render主线程氏竞态的。

但是如果没有首先从对象渲染列表中移除渲染对象就调用Dispose方法释放VextexBuffer就会出现问题。

即使Dispose之前将isInitialized设置为false,这样仍保不准Update线程调用Initialize()方法后将isInitialized又设置为true。

转载于:https://www.cnblogs.com/yhlx125/p/3628433.html

你可能感兴趣的文章
网络安全管理的“四抓”之法
查看>>
大数据迎来节能时代
查看>>
CRM是企业营销制胜的王道
查看>>
若无法走上数字化转型之路,CIO将被“边缘化”
查看>>
中国研发出勒索病毒防御软件 能阻止其破坏文件
查看>>
关于勒索软件防御,你需要知道的几个事实
查看>>
《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一1.3 客单价
查看>>
《Hadoop与大数据挖掘》一2.1.3 Hadoop计算—MapReduce
查看>>
Python Web 应用:WSGI基础
查看>>
《关系营销2.0——社交网络时代的营销之道》一第1章 克服恐惧,开始关系营销...
查看>>
fastjson 1.2.33 发布,Java 的 JSON 处理器
查看>>
《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——1.1节智能手机世界...
查看>>
《语义网基础教程(原书第3版)》—— 第2章 描述万维网资源:RDF
查看>>
ES6的箭头函数
查看>>
Cache-Control for Civilians
查看>>
解决小程序 callback hell
查看>>
【算法题】最大连续子序和
查看>>
前端优化常用技术心得
查看>>
JS正则表达式-学习笔记
查看>>
为什么我们一直没有遇到外星人?
查看>>