|
发表于 2015-6-20 20:31:29
|
显示全部楼层
湖南省益阳市
这是别人对于多线程的一些理解以及见解
如有不对的地方欢迎指出但是勿喷(不喜勿看)
1.首先关于多线程
多线程是指同时多条线程进行操作或许很疑惑
上图就是单线程操作(即是主线程),下图为多线程操作
从图片长度就可以看出那个更快一些
但是,凡事就怕有但是,事无绝对.任何事都需要视具体情况而定.
实际上创造一个线程需要时间(系统资源开销),销毁一个线程也需要时间.如果频繁的创建销毁线程会带来大量的时间浪费
上图虽然用到了多线程
但是还不如使用单线程
线程在创建以及销毁的时候都会有一部分资源开销
2.线程的用途
1.解决高堵塞
2.需要高效率充分利用多核心
关于高堵塞
通常用于网络方面的利用
假设a与b传输数据的延时是一百秒,每一次传输最多是10个字节(只是假设)
单线程情况下就是,没一百秒最多传输十个字节,一千秒一百个.
多线程情况下呢?
a与b同时建立一百个传输通道,那么速度就是每秒钟十个字节,每一千秒十kb(约等于)
这只是为了凸显多线程的效果而假设的数据,实际情况根据具体网络环境而定.
关于高效率充分利用多核心
这个需要视实际情况而定,不过现在多核心处理器已经普及了.
水桶的水位取决于最低的短板(水桶效应),而电脑的短板往往不是cpu以及内存,而是硬盘i/o.
所以编程设计的时候要充分的考虑到这些.
只有你富足的资源可以浪费,你本身就性能比较弱的零件经不起你的浪费
浪费的后果就是让你的程序变得缓慢,用户体验非常的差.
如何的充分的利用多线程这是非常复杂的东西,从程序最初结构设计就需要考虑到,并不是说你用一个"启动线程"就是多线程了,就会提高效率了,有时候反倒会适得其反.
关于这个再次不多说,因为要求这种运算级别的程序一般不会用易语言写(囧),用多线程的时候一定要慎重选择以及构思,修改代码是非常麻烦以及痛苦的,多线程会带来很多的负面效应在此不多说,后面会详细解答.
3.关于多线程的有可能会出现的问题
1.程序崩溃
2.程序崩溃
3.程序崩溃
4.程序崩溃
好吧其实多线程如果构思程序的时候没有考虑周全会出现很多种问题,但是表现情况都一样程序崩溃程序退出.
1.除局部以外(局部不包括静态)文本,字节集,或任意类型数组,或者说出了几个数值型的以及字节型的.http://blog.csdn.net/q349980363/article/details/8012495(里面几个没必要说明的可以进行多线程读写操作,其他以外的都有可能引发问题)
顺便提一点,多线程程序在win7下稳定得多,相对于xp...........
关于为什么会引起崩溃
线程a对变量操作的时候b也操作,a改写了文本申请了新的内存地址同时修改了指针然后释放了原指针,但是b读取了原指针需要读取数据的时候,a已经把指针释放了.
那样就会内存访问错误,就会提示XXXXX内存访问错误.
这只是关于多线程的一个大概的讲解,因为看到论坛有很多人对多线程有很多的误区,所以使用图文并茂的方式来讲解一下方便理解.
因为是临时要写所以也没什么准备比较短篇,以后还会继续发布教程
此系列教程列表http://blog.csdn.net/q349980363/article/details/9338443
|
评分
-
查看全部评分
|