编辑推荐
多线程编程是当今热门的一种编程技术。结合强大的C ,你可以轻松创建各种类型的应用程序、执行并行和优化现有程序。本书是一本实践为主、通俗易懂的C Windows多线程编程指导。你将学会如何从多线程方案中受益,提升自己的开发能力,构建更好的应用程序。本书不仅讲解了创建并行代码时会遇到的问题,而且还帮助读者更好地理解同步技术。本书的目标是帮助读者在理解多线程编程概念的同时,能快速有效地进行并行计算和并发编程。本书包含以下内容:使用包含继承、继承和多态的面向对象编程模型;解决常见的进程间通信问题,避免在开发应用程序中出现死锁和饥饿;使用CThread类有效地管理线程;了解.NET CLI/C 特性,及其同步对象和同步技术;如何在代码设计中使用并行技术;如何在并发执行中使用机器资源;通过消息传递协调程序间的工作;避免典型的同步问题。本书特色:文字简介,易于读者理解。精挑细选,关注重要的任务和问题。细心组织,提供高效的问题解决方案。讲解透彻,清晰解读每个操作步骤。举一反三,将解决方案应用到其他场景中
内容简介
《C 多线程编程实战》共8章。第1章介绍了C 编程语言的概念和特性。第2~5章介绍了进程、线程、同步、并发的相关知识。其中,第2章介绍进程和线程的基本概念,详细介绍了进程和线程对象。第3章讲解线程管理方面的知识,以及进程和线程背后的逻辑,简要介绍了线程同步、同步对象和同步技术。第4章重点介绍了消息传递技术、窗口处理器、消息队列和管道通信。第5章介绍了线程同步和并发操作,讲解了并行、优先级、分发器对象和调度技术,解释了同步对象(如互斥量、信号量、事件和临界区)。第6章介绍.NET框架中的线程,概述了C /CLI .NET线程对象。简要介绍了托管方法、.NET同步要素、.NET线程安全、基于事件的异步模式和BackgroundWorker对象,以及其他主题。第7~8章为水平较高的读者准备了一些高级知识,概述了并发设计和高级线程管理。其中,第7章讲解理解并发代码设计,涵盖了诸如性能因素、正确性问题、活跃性问题的特性。第8章讲解高级线程管理,重点介绍更高级的线程管理知识。详细介绍了线程池的抽象、定制分发对象,以及死锁的解决方案。附录涵盖了MySQL Connector C和WinDDK的具体安装步骤,介绍了如何为驱动程序编译和OpenMP编译设置Visual Studio。另外,还介绍了DebugView应用程序的安装步骤,并演示了它的使用步骤。《C 多线程编程实战》主要面向中高级读者,可作为用C 进行Windows多线程编程的参考读物。本书介绍的同步概念非常基础,因此也可作为对这方面技术感兴趣的读者和开发人员的参考书籍。
作者简介
Milo? Ljumovi?于7月26日出生在欧洲黑山共和国的首都波德戈里察,在那里度过了小学和中学的时光,还到音乐学校学习了吉他。随后在黑山大学自然科学和数学学院进修了计算机科学。他对计算机浓厚兴趣,主修操作系统并获得了硕士学位。2009年12月,Milo?和他的朋友Danijel一起成立了自己的公司,作为一名程序员和高水平的团队一起致力于提供高技术含量的IT解决方案。不久,许多杰出的开发者加入了他们,合作开发了许多应用程序和系统软件、web应用程序和数据库系统。他的客户不仅包括黑山政府,还涉及一些大型的国有企业,开发了一个新的金融系统MeNet以及一些与图片和其他数字媒体类型相关的视频识别软件。除此之外,他还开发了许多网站和其他网络应用程序。客户数量众多,不胜枚举。Milo?作为国际顾问在美国一家大型的互联网电子商务贸易和数据采集公司工作了几个月。随后于2014年7月创立了一家新公司:EXPERT.ITS.ME。除了开发软件,他还为IT行业的小型企业提供咨询服务,鼓励并帮助他们在处理好企业管理问题的同时,把企业做大做强。另外,Milo?还是黑山国家委员会成员和门萨成员。他热爱编程,擅长C/C /C#语言,精通HTML、PHP、TSQL等,梦想能开发出自己的操作系统。在业余时间里,Milo?喜欢打网球、潜水、狩猎和下象棋。喜欢和自己的团队进行头脑风暴,想出一些在IT领域和计算机科学领域新鲜、时尚的好点子。他紧跟IT的发展步伐,不断学习新知识、解决新问题。尤其喜欢教授计算机科学和数学学生,在私有课堂和课程和分享它们给合格的程序员,帮助他们发现科学之美。想更多了解他的兴趣爱好和近况,
目录
- 第1章 C 概念和特性简介 1
- 1.1 介绍 1
- 1.2 创建C 项目 2
- 1.3 程序结构、执行流和运行时对象 3
- 1.4 结构化编程方法 7
- 1.5 理解面向对象编程方法 9
- 1.6 解释继承、重载和覆盖 11
- 1.7 理解多态 15
- 1.8 事件处理器和消息传递接口 18
- 1.9 链表、队列和栈示例 22
- 第2章 进程和线程的概念 31
- 2.1 简介 31
- 2.2 进程和线程 31
- 2.3 解释进程模型 32
- 2.4 进程的实现 36
- 2.5 进程间通信(IPC) 39
- 2.6 解决典型的IPC问题 47
- 2.7 线程模型的实现 55
- 2.8 线程的用法 60
- 2.9 在用户空间实现线程 66
- 2.10 在内核实现线程 73
- 第3章 管理进程 79
- 3.1 介绍 79
- 3.2 进程和线程 80
- 3.3 协作式和抢占式多任务处理 83
- 3.4 解释Windows线程对象 84
- 3.5 基本线程管理 85
- 3.6 实现异步的线程 92
- 3.7 实现同步的线程 97
- 3.8 Win32同步对象和技术 101
- 3.8.1 同步对象:互斥量 102
- 3.8.2 同步对象:信号量 103
- 3.8.3 同步对象:事件 104
- 3.8.4 同步对象:临界区 105
- 第4章 消息传递 107
- 4.1 介绍 107
- 4.2 解释消息传递接口 108
- 4.3 理解消息队列 112
- 4.4 使用线程消息队列 118
- 4.5 通过管道对象通信 122
- 第5章 线程同步和并发操作 127
- 5.1 介绍 127
- 5.2 伪并行 127
- 5.3 理解进程和线程优先级 128
- 5.4 Windows分发器对象和调度 134
- 5.5 使用互斥量 135
- 5.6 使用信号量 143
- 5.7 使用事件 150
- 5.8 使用临界区 157
- 5.9 使用管道 164
- 第6章 .NET框架中的线程 177
- 6.1 介绍 177
- 6.2 托管代码和非托管代码 177
- 6.3 如何在.NET中运行线程 179
- 6.4 前台线程和后台线程的区别 185
- 6.5 理解.NET同步要素 188
- 6.6 锁和避免死锁 193
- 6.7 线程安全和.NET框架的类型 198
- 6.8 事件等待