CoInitialize和CoInitializeEx
1.CoInitialize和CoInitializeEx的功能
CoInitialize是在當前線程初始化Com組件的函數,并且初始化為STA模式(單線程模式),一般新的程序建議使用CoInitializeEx來替代。CoInitializeEx初始化當前線程Com組件并提供更多的設置選項,如并發模式等。
2.關于并發模型的說明(concurrency model)
并發模型類型
下面兩種不能同時設置
COINIT_APARTMENTTHREADED
這個模式允許多線程調用,但是多線程所有的調用請求實際是被序列化,執行還是在創建這個線程對象的那個線程執行
COINIT_MULTITHREADED
這個模式允許在任何線程調用對象的方法(在這個線程創建的對象)。這不是序列化的,許多調用可以在不同的線程調用對象的方法。這種模式提供了一種高效的性能可以很好的利用多處理器跨線程、進程、機器調用,這是因為調用的這個方法沒有被序列化,而是被同時調用的。所以這種使用時作者需要自己使用線程同步的方法。這種模式一般用來無界面的調用。
?
下面兩種一般不用
COINIT_DISABLE_OLE1DDE禁用DDE對OLE1的支持COINIT_SPEED_OVER_MEMORY增加內存使用來使性能上升
3.CoInitialize多次調用和CoInitializeEx多次調用的問題
在同一個線程內多次調用CoInitializeEx是允許的,但沒有任何意義。
出處:http://www.cnblogs.com/zhangdongsheng/ 作者:張東升總結
以上是生活随笔為你收集整理的CoInitialize和CoInitializeEx的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 芒果TVAPP怎么打不开了(如何优雅地吃
- 下一篇: 倒数日 · Days Matter桌面不
