设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 游戏开发 >> 《Windows游戏编程大师技巧》(第二版)第11章
精品推荐
游戏开发点击TOP10
·DirectX5.0最新游戏编程指南 DirectDraw教程篇 二、第一个DirectDraw实例
·用Excel编写小游戏
·五子棋的原代码
·游戏开发方面相关的电子书下载
·游戏文件系统的解决方案
·基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III
·用MFC构造DirectX应用框架
·游戏开发开门
·《Windows游戏编程大师技巧》(第二版)第11章
·DirectX8.1的DirectDraw7研究手记(三)
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

《Windows游戏编程大师技巧》(第二版)第11章

作者: 来源:网络文章 时间:2005-12-17 22:39:07

《Windows游戏编程大师技巧》(第二版)第11章(38) 为实现这类资源管理程序并正确地共享线程,我们需要创建一个变量来跟踪其他使用该资源的线程。任何需要使用该资源的线程都必须检测该变量,之后才能使用它。当然,这依然是个问题,除非这个变量能够被检测或独立(Atomically)地修改,因为你可能正修改一个变量进行到一半而其他线程恰在这时获得控制权。
可以将这类变量设置为volatile类型以将其问题发生概率最小化,这样便告知编译器不要为其进行内存拷贝。然而,最终你还不得不使用信号量(Semaphores,一个简单的类似于全局变量的计数器,但却是以不能被打断的基本汇编代码形式存在)、互斥体(Mutex,只允许一个线程访问临界区,是二进制的信号量)、临界区(Critical Section,指定编译器在编译Win32调用时一次只能允许一个线程)等等。另一方面,如果每一个线程的功能相对比较独立,也就不必过多考虑这些。
DEMO11_10.CPPEXE是一个应用多线程编程的DirectX实例(其16位版本是DEMO11_10_16B.CPPEXE),读者可以检验一下该程序。该程序创建了许多外星BOB(Blitter Object),并使它们围绕主线运动。此外该程序还创建了另外一个线程以动态改变这些BOB的颜色。这是一个非常简单、安全的多线程程序范例。最后要确保将该程序连上所有DirectX .LIB文件。
但是,如果有许多线程都调用同一函数,就会产生可重入性(Reentrancy)的问题。需要重入的函数必须要有状态信息,而且不能使用可能会被具有抢占优先权的线程进出程序时破坏的全局变量。
此外,如果使用线程来使DirectX对象自己动起来,表面事故、计时及同步过程很可能会出错。因此建议读者严格限制使用线程来处理那些在很大程度上是独立的、只存在于它们自己的“状态空间”中的并且不需要以精确频率运行的对象。
高级多线程编程
好了!本章到此也告一段落。因为接下来我们只能探讨竞争条件、死锁、临界区、互斥体、信号量以及许多令人头疼的问题。澄清所有这些问题(除了最后一个)都会有助于读者编写无错的多线程程序。当然,即使对此一无所知,读者仍然能够依据常识编写出基本安全的多线程程序,记住任何线程都可能会随时被其他线程打断这个道理。注意你编写的线程是如何访问共享数据结构的。
尽可能以独立且自动的方式进行这些操作。确保这样的事情不会发生:一个线程修改变量,而另一个线程错误地使用了正被修改到一半的变量。同时,除本章提及的函数调用外,还有几个基本函数调用没有提及,如ExitThread()和GetThreadExitCode(),但这几个函数相对比较简单易于理解,并可以在你的API参考书中查到它们。
总结
本章内容读来比较轻松,没有太多的技术术语,只是一顿丰富的知识大餐。我形容它为大餐,呃,大概是因为我在写作过程中吃了太多Power Bar速食条了。言归正传,本章中我们接触了许多基础知识:如数据结构、内存管理、递归、分析、定点数运算和多线程。
其中有些内容乍看与游戏似乎关系不大,但确实相关。要制作一个游戏,我们必须了解编程的每一方面——因为游戏的确是如此复杂!现在本章告一段落,我要出门去租《2001: A Space Odyssey》回来看了,因为下一章我们将探讨人工智能……

1.《Windows游戏编程大师技巧》(第二版)第11章(1)
2.《Windows游戏编程大师技巧》(第二版)第11章(2)
3.《Windows游戏编程大师技巧》(第二版)第11章(3)
4.《Windows游戏编程大师技巧》(第二版)第11章(4)
5.《Windows游戏编程大师技巧》(第二版)第11章(5)
6.《Windows游戏编程大师技巧》(第二版)第11章(6)
7.《Windows游戏编程大师技巧》(第二版)第11章(7)
8.《Windows游戏编程大师技巧》(第二版)第11章(8)
9.《Windows游戏编程大师技巧》(第二版)第11章(9)
10.《Windows游戏编程大师技巧》(第二版)第11章(10)
11.《Windows游戏编程大师技巧》(第二版)第11章(11)
12.《Windows游戏编程大师技巧》(第二版)第11章(12)
13.《Windows游戏编程大师技巧》(第二版)第11章(13)
14.《Windows游戏编程大师技巧》(第二版)第11章(14)
15.《Windows游戏编程大师技巧》(第二版)第11章(15)
16.《Windows游戏编程大师技巧》(第二版)第11章(16)
17.《Windows游戏编程大师技巧》(第二版)第11章(17)
18.《Windows游戏编程大师技巧》(第二版)第11章(18)
19.《Windows游戏编程大师技巧》(第二版)第11章(19)
20.《Windows游戏编程大师技巧》(第二版)第11章(20)
21.《Windows游戏编程大师技巧》(第二版)第11章(21)
22.《Windows游戏编程大师技巧》(第二版)第11章(22)
23.《Windows游戏编程大师技巧》(第二版)第11章(23)
24.《Windows游戏编程大师技巧》(第二版)第11章(24)
25.《Windows游戏编程大师技巧》(第二版)第11章(25)
26.《Windows游戏编程大师技巧》(第二版)第11章(26)
27.《Windows游戏编程大师技巧》(第二版)第11章(27)
28.《Windows游戏编程大师技巧》(第二版)第11章(28)
29.《Windows游戏编程大师技巧》(第二版)第11章(29)
30.《Windows游戏编程大师技巧》(第二版)第11章(30)
31.《Windows游戏编程大师技巧》(第二版)第11章(31)
32.《Windows游戏编程大师技巧》(第二版)第11章(32)
33.《Windows游戏编程大师技巧》(第二版)第11章(33)
34.《Windows游戏编程大师技巧》(第二版)第11章(34)
35.《Windows游戏编程大师技巧》(第二版)第11章(35)
36.《Windows游戏编程大师技巧》(第二版)第11章(36)
37.《Windows游戏编程大师技巧》(第二版)第11章(37)
38.《Windows游戏编程大师技巧》(第二版)第11章(38)
共38页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [388 :>

《Windows游戏编程大师技巧》(第二版)第11章 相关文章:
《Windows游戏编程大师技巧》(第二版)第11章 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com