编程要弄清楚许多概念,可有时候我们的概念就是模糊不清。初学者常常搞不清的就是对象和线程的关系。
明确一下,对象和线程没有关系,或者说没有直接的关系。对象是类的实例;线程是多任务操作系统调度的产物。对象包罗万象的容纳了东西种种,可是是个僵尸,因为他不能动弹;线程拥有时间片,操作系统赋予了它运动的活力。可以这么说,对象是通过线程的执行来改变其数据的。对象必定属于某个线程(或进程),若对象不在线程中,那它还没有成为对象,只能是它的模子-类。
看看现实世界吧。“苹果树”是对象,“苹果”是对象,也是苹果树的子对象。“人的活动”是线程。人把苹果从苹果树上摘了,洗了,削了,吃了。“人的活动”改变了“苹果”对象。常常有人弄不明白线程之间的同步,访问公共共享数据的几个线程需要同步,就是说不能大家一起访问,得按照顺序一个一个来访问。为什么,这也很好理解。设想有一个苹果(公共共享数据),要求你必须能完整地得到它,吃了它,若没有先来后到,大家都来抢(多个线程无序状态)这个苹果,会是什么样?七零八落,抢到你的手里不会是个完整的苹果,这就背离了我们的初衷。
我们在具体的开发过程中,要用面向对象的思维来思考问题,多个任务往往是要求并行处理的,这时候还要考虑分配成几个线程来完成。你可以把它相象成今天我们有一堆事情(对象)需要做,许多事情是需要同时做的,我们该考虑安排几个人(线程)来做,是不是很简单?
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能