您的位置:首页 > 其它

多线程的理解和标准多线程模型

2015-04-05 22:48 127 查看
在刚听说多线程这三个字的时候,第一反应就是多条线程并发同时执行一个程序,这算是最初的理解。当时脑海里也就这一句话,多线程真的高大上!

怎么进行多线程?

如果说要开始着手去实施,那么一定要弄清楚多线程的发动。后来我明白,这需要用到计次循环。多么简单啊,一条线程循环三次,不就是三条线程了吗?

这确实没有错,这就是最简单的多线程发动方式了!

如果说用到计次循环,那么我们就应该知道,显然这并不是真正意义上的并发,并不是真正意义上的同时启动!但是,由于计次循环的速度极快,某种意义上

也算是同时发动了几条线程。我们既要搞清楚发动方式,还要搞懂其中的区别!后面会讲到这一点!

具体的思路如何?

光搞懂多线程是用计次来发动,显然还不够。我们在具体实施的时候,标准的方案是启动一个主线程,然后在主线程里分出多线程。这个好处显而易见,至于原理,

我也没有去研究这个。例如:启动线程(&启动多线程),这样的好处可能是不会卡顿!

下面我们进入更重要的一点,那就是多线程对同个子程序A操作的时候,如果子程序A里面还有子程序B该如何去理解?

如果我们按照正常的思路思考这个问题,我们会产生下面两点理解方式:

一 因为是计次循环发动多线程,必然线程间有循序,那么肯定是一条线程访问完整个子程序A所有的代码,包括子程序B以后,下个线程接着访问!

二 如果给子程序B加上进入许可区,那么应该是一个线程访问完子程序B,下面线程继续访问!

看好,我是说如果按正常思路会产生上面两点理解方式!全部正确吗?还是全部都不对?还是有些对有些错呢?这就留给大家去思考!

其实,问题就出在子程序里面还有个子程序B,也就是子程序体里套了个子程序!对于这种情况,多线程访问的时候,我们要特别的注意。

按照我看到的现象,产生下面几点心得:

一 如果子程序B在A代码区上面,那么所有线程会首先访问子程序B函数体,直到全部访问完,才会接着访问子程序A里B下面的代码!

二 就算给B加上许可区,所有线程也都会等待进入B,直到所有线程全部访问完!

有些东西,真的只有实际多测试才知道!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: