在
计算机程序设计领域,运行时库是一种被
编译器用来实现
编程语言内置函数,以提供该语言程序运行时(执行)支持的一种特殊的计算机程序库。这种库一般包括基本的输入输出或是
内存管理等支持。
运行时库由
编译器决定,以面向
编程语言,提供其最基本的执行时需要。比如Visual Basic需要复杂的运行时库支持而C的运行时库则相对简单。
运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是
单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的C运行时库都是
单线程的。
随着操作系统
多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个
全局变量(例如errno)和
静态变量,这可能在多线程程序中引起冲突。假设两个线程都同时设置errno,其结果是后设置的errno会将先前的覆盖,用户得不到正确的
错误信息。
因此,Visual C++提供了两种版本的C运行时库。一个版本供
单线程应用程序调用,另一个版本供多线程应用程序调用。多线程运行时库与
单线程运行时库有两个重大差别: