C runtime 函數

 
 當 C runtime 函數庫於20世紀70年代產生出來時,PC 的內存容量還很小,多任務是個新奇的觀念,更別提什麼多線程了。所以以當時產品爲基礎所演化的 C runtime 函數庫在 多線程(multithreaded)的表現上有嚴重問題,沒法被多線程程序使用。

  利用各類同步機制(synchronous mechanism)如 critical section、mutex、semaphore、event,能夠從新開發一套支持多線程的 runtime 函數庫。問題時,加上這樣的能力,可能致使程序代碼大小和執行效率都遭受不良波及——即便你只激活了一個線程。

  Visual C++ 的折衷方案是提供兩種版本的 C runtime 函數庫。一種版本的給單線程程序使用,一種版本給多線程程序使用。多線程版本的重大改變是,第一,變量如 errno 者如今變成每一個線程各擁有一個。第二,多線程版中的數據結構以同步機制加以保護。

Visual C++ 一共有六個 C runtime 函數庫產品供你選擇:

一、 Single-Threaded (static) libc.lib 898,826
二、 Multithreaded (static) libcmt.lib 951,142
三、 Multithreaded DLL msvcrt.lib 5,510,000
四、 Debug Single-Threaded (static) libcd.lib 2,374,542
五、 Debug Multithread (static) libcmtd.lib 2,949,190
六、 Debug Multithreaded DLL msvcrtd.lib 803,418

Visual C++ 編譯器提供下列選項,讓咱們決定使用哪個 C runtime 函數庫:

一、 /ML Single-Threaded (static)
二、 /MT Multithreaded (static)
三、 /MD Multithreaded DLL (dynamic import library)
四、 /MLd Debug Single-Threaded (static)
五、 /MTd Debug Multithreaded (static)
六、 /MDd Debug Multithreaded DLL (dynamic import library)
相關文章
相關標籤/搜索