答:静态链接库就是把(lib)文件中用到的函数代码直接连接进目标程序,程序运行的时候再也不须要其它的库文件;动态连接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息连接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,所以须要相应DLL文件的支持。 静态连接库与动态连接库都是共享代码的方式,若是采用静态连接库,则不管你愿不肯意,lib 中的指令都所有被直接包含在最终生成的 EXE 文件中了。可是若使用 DLL,该 DLL 没必要被包含在最终 EXE 文件中,EXE 文件执行时能够“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态连接库和动态连接库的另一个区别在于静态连接库中不能再包含其余的动态连接库或者静态库,而在动态连接库中还能够再包含其余的动态或静态连接库。
简述多线程程序对比单线程程序的优势和缺点。算法
(1)多线程的优势: 无需跨进程边界; 程序逻辑和控制方式简单; 全部线程能够直接共享内存和变量等; 线程方式消耗的总资源比进程方式好; (2)多线程缺点: 每一个线程与主程序共用地址空间,受限于2GB地址空间; 线程之间的同步和加锁控制比较麻烦; 一个线程的崩溃可能影响到整个程序的稳定性; 到达必定的线程数程度后,即便再增长CPU也没法提升性能; 线程可以提升的总性能有限,并且线程多了以后,线程自己的调度也是一个麻烦事儿,须要消耗较多的CPU (3)多进程优势: 每一个进程互相独立,不影响主程序的稳定性,子进程崩溃不要紧; 能够尽可能减小线程加锁/解锁的影响,极大提升性能,就算是线程运行的模块算法效率低也不要紧; 经过增长CPU,就能够容易扩充性能; 每一个子进程都有2GB地址空间和相关资源,整体可以达到的性能上限很是大 (4)多进程缺点: 逻辑控制复杂,须要和主程序交互; 多进程调度开销比较大; 须要跨进程边界,若是有大数据量传送,就不太好,适合小数据量传送、密集运算