发布网友 发布时间:2024-09-27 03:25
共1个回答
热心网友 时间:2024-10-03 19:19
假如说现在有下面四个问题:
1+1=a,1+2=b,2+3=c,4+5=d
单线程就是一个接一个的计算:
第一步:
1、+1=2,第二步:
1、+2=3,第三步:2+3=5,第四步:4+5=9
然后告诉你结果:
a=2, b=3, c=5, d=9
多线程,咱们就说四线程吧,就是同时计算四个问题:
第一步:
线程一:
1、+1=2
线程二:
1、+2=3
线程三:2+3=5
线程四:4+5=9
然后告诉你结果:
a=2, b=3, c=5, d=9
可见,多线程可以同时处理多个计算,计算能力似乎是成倍成比例上涨的,但是它有一个问题就是多个运算必须,比如:
1+2=a,a+3=b
这种计算,你不知道a就没法计算b,这种情况下就没办法多线程计算了。
再就是“竞争状态”:
就是说多个线程互相等待对方结束,或者等待对方释放资源。单线程的话所有的操作一定会是一个接一个的完成,所以不存在这个状况。但如果多线程的话,调度没有做好就很容易发生这种事情,比如不小心同时运行了本不应该同时运行的两个线程,或者其中一个线程没有在预定时间内结束就启动了第二个线程。
单线程的好处就是易于编程,不需要考虑太多状况,缺点是效率低。
多线程的好处是效率高,性能高,但是不是所有的运算都可以被并行化,而且容易出现各种意外的稀奇古怪的bug。
热心网友 时间:2024-10-03 19:24
假如说现在有下面四个问题:
1+1=a,1+2=b,2+3=c,4+5=d
单线程就是一个接一个的计算:
第一步:
1、+1=2,第二步:
1、+2=3,第三步:2+3=5,第四步:4+5=9
然后告诉你结果:
a=2, b=3, c=5, d=9
多线程,咱们就说四线程吧,就是同时计算四个问题:
第一步:
线程一:
1、+1=2
线程二:
1、+2=3
线程三:2+3=5
线程四:4+5=9
然后告诉你结果:
a=2, b=3, c=5, d=9
可见,多线程可以同时处理多个计算,计算能力似乎是成倍成比例上涨的,但是它有一个问题就是多个运算必须,比如:
1+2=a,a+3=b
这种计算,你不知道a就没法计算b,这种情况下就没办法多线程计算了。
再就是“竞争状态”:
就是说多个线程互相等待对方结束,或者等待对方释放资源。单线程的话所有的操作一定会是一个接一个的完成,所以不存在这个状况。但如果多线程的话,调度没有做好就很容易发生这种事情,比如不小心同时运行了本不应该同时运行的两个线程,或者其中一个线程没有在预定时间内结束就启动了第二个线程。
单线程的好处就是易于编程,不需要考虑太多状况,缺点是效率低。
多线程的好处是效率高,性能高,但是不是所有的运算都可以被并行化,而且容易出现各种意外的稀奇古怪的bug。