歡迎大家跟我交流
gTalk: 2005119@gmail.com
我的統計
您是第 位訪客
ACE運行時的初始化和結束時的回收操作
url: http://www.shnenglu.com/ace
如果我從dll中調用 test()函數,函數返回2...
========================解答:平臺不同及兼容性問題的一個特殊地方是運行時對象的初始化和程序退出時與那相類象相關的析構操作。這種不同尤其表現在包含有多線程的時候,這是因為編譯器沒有附加的能力來順序訪問那些有先后之分的運行時對象(靜態數據)的自動初始化和析構的方法。因此ACE說的一句話"靜態是邪惡的",幸運的是,ACE提供了一種可移植的解決方案來解決對象初始化和析構的問題。
如果你的程序不是從標準的main()開始的,你需要在初始化和結束時用到對象管理器。你需要調用下面兩個函數:
ace::init() 在其它ACE操作之行前初始化對象管理器。
ace::fini() 在你的ACE操作完成后,結束對象管理器。這個調用將觸發注冊在對象管理器中所有對象的clearup操作。
這對于Windows程序來說可能很要緊,因為Windows程序使有WinMain()好過于標準的main()函數,在庫中使用ACE但用戶找不到主程序入口。對于庫來說,為庫分別提供初始化結束化函數來分別調用ACE::init()和ACE::fini()是非常有用的。
Powered by: C++博客 Copyright © Stone Jiang