CEF3研究(一)
阿新 • • 發佈:2017-05-18
efault task 計數 產生 cts 應用 release ring script 一、基本概覽
在CEF3中每個進程以多線程運行。 cef_thread_id_t枚舉定義了所有線程列表。瀏覽進程包含4個線程:
- C++ Wrapper
C++Wrapper(包裝類)就是將C結構包裝C++類。 這是C/C++API轉換層通過translator tool自動產生的。 - 進程
- 主(瀏覽)進程 ——處理窗口創建,繪制和網絡訪問,會產生相同的進程作為主應用程序,及處理主應用程序的邏輯。
- 渲染進程——處理閃爍渲染和JavaScript的執行,也處理一些應用程序邏輯,如JavaScript綁定和DOM的訪問。
- scheme + domain進程——默認的進程模型的渲染進程。每個進程有唯一的源
- 其他進程,如插件進程、gpu處理,是按需要產生的。
3. 線程
- TID_UI 是瀏覽進程的主線程,如果主應用程序線程調用 CefInitialize()以CefSettings.multi_threaded_message_loop = false調用,那麽主應用程序線程也是TID_UI.
- TID_IO 在瀏覽進程中用於處理進程IPC和網絡消息。
- TID_FILE在瀏覽進程中用於與文件系統交互
- TID_RENDERER在渲染進程的主線程
IMPLEMENT_REFCOUNTING(MyClass);//讓本類支持引用計數
5. 字符串
CEF自定義字符串,有如下不同的原因:- libcef庫和主應用程序可以使用不同的運行時管理堆內存,所有的對象或字符串都需要在同一個運行時釋放申請的空間
- libcef庫可以支持不同形式的字符串類型(UTF8, UTF16和wide).默認使用UTF16,可修改cef_string.h的相關宏來改變。
-
- cef_string_set will assign a string value to the structure with or without copying the value.
- cef_string_clear
- cef_string_cmp will compare two string values.
- std::string和CefString 相互轉換
std::string str = “Some UTF8 string”; // Equivalent ways of assigning |str| to |cef_str|. Conversion from UTF8 will occur if necessary. CefString cef_str(str); cef_str = str; cef_str.FromString(str); // Equivalent ways of assigning |cef_str| to |str|. Conversion to UTF8 will occur if necessary. str = cef_str; str = cef_str.ToString(); |
---|
2. std::wstring和CefString 相互轉換
std::wstring str = “Some wide string”; // Equivalent ways of assigning |str| to |cef_str|. Conversion from wide will occur if necessary. CefString cef_str(str); cef_str = str; cef_str.FromWString(str); // Equivalent ways of assigning |cef_str| to |str|. Conversion to wide will occur if necessary. str = cef_str; str = cef_str.ToWString(); |
---|
3. ASCII(char)和CefString之間轉換
const char* cstr = “Some ASCII string”; CefString cef_str; cef_str.FromASCII(cstr); |
---|
4.cef_string_t 和CefString之間轉換
CefSettings settings; const char* path = “/path/to/log.txt”; // Equivalent assignments. CefString(&settings.log_file).FromASCII(path); cef_string_from_ascii(path, strlen(path), &settings.log_file); |
---|
CEF3研究(一)