多线程的理解和标准多线程模型
2015-04-05 22:48
127 查看
在刚听说多线程这三个字的时候,第一反应就是多条线程并发同时执行一个程序,这算是最初的理解。当时脑海里也就这一句话,多线程真的高大上!
怎么进行多线程?
如果说要开始着手去实施,那么一定要弄清楚多线程的发动。后来我明白,这需要用到计次循环。多么简单啊,一条线程循环三次,不就是三条线程了吗?
这确实没有错,这就是最简单的多线程发动方式了!
如果说用到计次循环,那么我们就应该知道,显然这并不是真正意义上的并发,并不是真正意义上的同时启动!但是,由于计次循环的速度极快,某种意义上
也算是同时发动了几条线程。我们既要搞清楚发动方式,还要搞懂其中的区别!后面会讲到这一点!
具体的思路如何?
光搞懂多线程是用计次来发动,显然还不够。我们在具体实施的时候,标准的方案是启动一个主线程,然后在主线程里分出多线程。这个好处显而易见,至于原理,
我也没有去研究这个。例如:启动线程(&启动多线程),这样的好处可能是不会卡顿!
下面我们进入更重要的一点,那就是多线程对同个子程序A操作的时候,如果子程序A里面还有子程序B该如何去理解?
如果我们按照正常的思路思考这个问题,我们会产生下面两点理解方式:
一 因为是计次循环发动多线程,必然线程间有循序,那么肯定是一条线程访问完整个子程序A所有的代码,包括子程序B以后,下个线程接着访问!
二 如果给子程序B加上进入许可区,那么应该是一个线程访问完子程序B,下面线程继续访问!
看好,我是说如果按正常思路会产生上面两点理解方式!全部正确吗?还是全部都不对?还是有些对有些错呢?这就留给大家去思考!
其实,问题就出在子程序里面还有个子程序B,也就是子程序体里套了个子程序!对于这种情况,多线程访问的时候,我们要特别的注意。
按照我看到的现象,产生下面几点心得:
一 如果子程序B在A代码区上面,那么所有线程会首先访问子程序B函数体,直到全部访问完,才会接着访问子程序A里B下面的代码!
二 就算给B加上许可区,所有线程也都会等待进入B,直到所有线程全部访问完!
有些东西,真的只有实际多测试才知道!
怎么进行多线程?
如果说要开始着手去实施,那么一定要弄清楚多线程的发动。后来我明白,这需要用到计次循环。多么简单啊,一条线程循环三次,不就是三条线程了吗?
这确实没有错,这就是最简单的多线程发动方式了!
如果说用到计次循环,那么我们就应该知道,显然这并不是真正意义上的并发,并不是真正意义上的同时启动!但是,由于计次循环的速度极快,某种意义上
也算是同时发动了几条线程。我们既要搞清楚发动方式,还要搞懂其中的区别!后面会讲到这一点!
具体的思路如何?
光搞懂多线程是用计次来发动,显然还不够。我们在具体实施的时候,标准的方案是启动一个主线程,然后在主线程里分出多线程。这个好处显而易见,至于原理,
我也没有去研究这个。例如:启动线程(&启动多线程),这样的好处可能是不会卡顿!
下面我们进入更重要的一点,那就是多线程对同个子程序A操作的时候,如果子程序A里面还有子程序B该如何去理解?
如果我们按照正常的思路思考这个问题,我们会产生下面两点理解方式:
一 因为是计次循环发动多线程,必然线程间有循序,那么肯定是一条线程访问完整个子程序A所有的代码,包括子程序B以后,下个线程接着访问!
二 如果给子程序B加上进入许可区,那么应该是一个线程访问完子程序B,下面线程继续访问!
看好,我是说如果按正常思路会产生上面两点理解方式!全部正确吗?还是全部都不对?还是有些对有些错呢?这就留给大家去思考!
其实,问题就出在子程序里面还有个子程序B,也就是子程序体里套了个子程序!对于这种情况,多线程访问的时候,我们要特别的注意。
按照我看到的现象,产生下面几点心得:
一 如果子程序B在A代码区上面,那么所有线程会首先访问子程序B函数体,直到全部访问完,才会接着访问子程序A里B下面的代码!
二 就算给B加上许可区,所有线程也都会等待进入B,直到所有线程全部访问完!
有些东西,真的只有实际多测试才知道!
相关文章推荐
- 深入理解视频编解码技术----基于H.264标准及参考模型 读书笔记
- 基于Java多线程机制的生产者-消费者模型模拟
- 理解UDDI(2):UDDI注册信息的数据模型
- 多线程编程 深入理解JMM
- 从 .NET 开发人员的角度理解 Excel 对象模型
- 理解工作流系统参考模型
- 基于select I/O模型的远程目录浏览与多线程文件下
- 开发人员的角度理解 Excel 对象模型
- 初步理解和使用Excel对象模型
- Servlet多线程模型实现
- COM组件的多线程测试-Apartment模型(附录)
- C# 代码标准 .NET2.0版(四)多线程编码指导方针
- 从 .NET 开发人员的角度理解 Excel 对象模型
- 多线程编程 深入理解DCL的安全性
- 威胁/奖赏模型的理解
- COM组件的多线程测试-Apartment模型
- 从 .NET 开发人员的角度理解 Excel 对象模型
- 希望这篇文章对理解C#的对象模型有所帮助
- C# 代码标准 .NET2.0版(四)多线程编码指导方针
- 《C++0x漫谈》系列之:多线程内存模型