中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

h5互動的網(wǎng)站百度快照和廣告的區(qū)別

h5互動的網(wǎng)站,百度快照和廣告的區(qū)別,網(wǎng)站優(yōu)化的核心不包括,微信網(wǎng)站制作方案并發(fā)和異步的由來已經(jīng)很久了,對于從xp開始編程的人來說,這個概念并不陌生,但問題在于,在早期,這兩個技術(shù)被認(rèn)為是操作系統(tǒng)提供的服務(wù),而非編程語言的概念。 事情發(fā)生變化的原因,和C標(biāo)準(zhǔn)不斷變遷…

并發(fā)和異步的由來已經(jīng)很久了,對于從xp開始編程的人來說,這個概念并不陌生,但問題在于,在早期,這兩個技術(shù)被認(rèn)為是操作系統(tǒng)提供的服務(wù),而非編程語言的概念。

事情發(fā)生變化的原因,和C++標(biāo)準(zhǔn)不斷變遷的原因類似,編程語言的演化是更加傾向于人類語言而不是傾向于機(jī)器語言,當(dāng)開發(fā)的效率壓過運(yùn)行的效率的時候,這種編程語言越做越大就更加的明顯了。但需要注意黑體字的前提,因為在許多特殊行業(yè)中,運(yùn)行的效率是壓過開發(fā)的效率的。

編程語言的演化是兩個方向的,要么越來越接近底層,要么越來越接近上層。

將工作卸載到 Windows 線程池

協(xié)同例程與任何其他函數(shù)的類似之處在于,調(diào)用方將會阻塞到某個函數(shù)向其返回了執(zhí)行為止。 另外,協(xié)同例程返回的第一個機(jī)會是第一個 co_await、co_return 或 co_yield。

因此,在協(xié)同例程中執(zhí)行受計算限制的工作之前,需要將執(zhí)行返回給調(diào)用方(換句話說,引入暫停點),使調(diào)用方不被阻塞。 如果還沒有對其他某個操作運(yùn)行 co_await 來做到這一點,則可以對 winrt::resume_background 函數(shù)運(yùn)行 co_await。 這會將控制權(quán)返回給調(diào)用方,然后立即在某個線程池線程上恢復(fù)執(zhí)行。

實現(xiàn)中使用的線程池是底層 Windows 線程池,因此具有極高的效率。

IAsyncOperation<uint32_t> DoWorkOnThreadPoolAsync()
{co_await winrt::resume_background(); // Return control; resume on thread pool.uint32_t result;for (uint32_t y = 0; y < height; ++y)for (uint32_t x = 0; x < width; ++x){// Do compute-bound work here.}co_return result;
}
編程時仔細(xì)考慮線程相關(guān)性

該方案繼續(xù)對上一個方案進(jìn)行擴(kuò)展。 你已將一些工作卸載到線程池,但希望在用戶界面 (UI) 中顯示進(jìn)度。?

IAsyncAction DoWorkAsync(TextBlock textblock)
{co_await winrt::resume_background();// Do compute-bound work here.textblock.Text(L"Done!"); // Error: TextBlock has thread affinity.
}

上述代碼拋出一個 winrt::hresult_wrong_thread 異常,因為必須從創(chuàng)建 TextBlock 的線程(即 UI 線程)更新 TextBlock。 一種解決方案是捕獲最初調(diào)用協(xié)同例程的線程上下文。 為此,請實例化 winrt::apartment_context 對象,執(zhí)行后臺工作,然后對 apartment_context 運(yùn)行 co_await 以切回到調(diào)用上下文。?

IAsyncAction DoWorkAsync(TextBlock textblock)
{winrt::apartment_context ui_thread; // Capture calling context.co_await winrt::resume_background();// Do compute-bound work here.co_await ui_thread; // Switch back to calling context.textblock.Text(L"Done!"); // Ok if we really were called from the UI thread.
}

只要上面的協(xié)同例程是從創(chuàng)建 TextBlock 的 UI 線程調(diào)用的,這種方法是可行的。 在應(yīng)用中,有很多時候都是可以保證這一點的。

若要通過某種更通用的解決方案來更新 UI(包括不確定調(diào)用線程的情況)可以對 winrt::resume_foreground 函數(shù)運(yùn)行 co_await,以切換到特定的前臺線程。 在以下代碼示例中,我們通過傳遞與 TextBlock 關(guān)聯(lián)的調(diào)度程序?qū)ο?#xff08;通過訪問其 Dispatcher 屬性)來指定前臺線程。 winrt::resume_foreground 實現(xiàn)對該調(diào)度程序?qū)ο笳{(diào)用 CoreDispatcher.RunAsync,以執(zhí)行協(xié)同例程中該調(diào)度程序?qū)ο笾蟮墓ぷ鳌?/p>

IAsyncAction DoWorkAsync(TextBlock textblock)
{co_await winrt::resume_background();// Do compute-bound work here.// Switch to the foreground thread associated with textblock.co_await winrt::resume_foreground(textblock.Dispatcher());textblock.Text(L"Done!"); // Guaranteed to work.
}

winrt::resume_foreground 函數(shù)采用可選的優(yōu)先級參數(shù)。 如果使用該參數(shù),則可以使用上面所示的模式。 如果不使用,則可以選擇將 co_await winrt::resume_foreground(someDispatcherObject); 簡化為 co_await someDispatcherObject;。?

?協(xié)同例程中的執(zhí)行上下文、恢復(fù)和切換(上)

概括地說,在協(xié)同例程中某個暫停點之后,原始執(zhí)行線程可能會消失,而恢復(fù)可能會在任何線程上發(fā)生(換而言之,任何線程都可以針對異步操作調(diào)用 Completed 方法)。

但是,如果對四個 Windows 運(yùn)行時異步操作類型 (IAsyncXxx) 中的任何一個運(yùn)行 co_await,則 C++/WinRT 會在運(yùn)行 co_await 時捕獲調(diào)用上下文。 另外,它可以當(dāng)延續(xù)操作恢復(fù)時,你仍處于該上下文中。 為此,C++/WinRT 會檢查你是否已進(jìn)入調(diào)用上下文,如果沒有,則切換到該上下文。 如果在運(yùn)行 co_await 之前你處于單線程單元 (STA) 線程中,則運(yùn)行之后你仍處于相同的線程中;如果在運(yùn)行 co_await 之前你處于多線程單元 (MTA) 線程中,則運(yùn)行之后你將處于不同的線程中。

IAsyncAction ProcessFeedAsync()
{Uri rssFeedUri{ L"https://blogs.windows.com/feed" };SyndicationClient syndicationClient;// The thread context at this point is captured...SyndicationFeed syndicationFeed{ co_await syndicationClient.RetrieveFeedAsync(rssFeedUri) };// ...and is restored at this point.
}

可以依賴此行為的原因在于,C++/WinRT 提供相應(yīng)的代碼,使這些 Windows 運(yùn)行時異步操作類型能夠適應(yīng) C++ 協(xié)同例程語言支持(這些代碼片段稱為等待適配器)。 C++/WinRT 中剩余的可等待類型只是一些線程池包裝器和/或幫助器;因此它們會在線程池中完成。?

using namespace std::chrono_literals;
IAsyncOperation<int> return_123_after_5s()
{// No matter what the thread context is at this point...co_await 5s;// ...we're on the thread pool at this point.co_return 123;
}

?如果對其他某個類型運(yùn)行 co_await,即使是在 C++/WinRT 協(xié)同例程實現(xiàn)中,則另一個庫會提供適配器,你需要了解這些適配器在恢復(fù)和上下文方面的作用。

為了盡量減少上下文切換次數(shù),可以使用本主題所述的某些方法。 讓我們看看該操作的幾個圖示。 以下偽代碼示例演示了一個事件處理程序的大綱。該處理程序調(diào)用 Windows 運(yùn)行時 API 來加載圖像,切換到后臺線程來處理該圖像,然后返回到 UI 線程以在 UI 中顯示該圖像。

IAsyncAction MainPage::ClickHandler(IInspectable /* sender */, RoutedEventArgs /* args */)
{// We begin in the UI context.// Call StorageFile::OpenAsync to load an image file.// The call to OpenAsync occurred on a background thread, but C++/WinRT has restored us to the UI thread by this point.co_await winrt::resume_background();// We're now on a background thread.// Process the image.co_await winrt::resume_foreground(this->Dispatcher());// We're back on MainPage's UI thread.// Display the image in the UI.
}

這會帶來額外的問題,在下一部分講述。?

http://www.risenshineclean.com/news/50419.html

相關(guān)文章:

  • 電子軟件開發(fā)工資多少錢成都seo優(yōu)化公司
  • 同城購物網(wǎng)站建設(shè)泰州百度關(guān)鍵詞優(yōu)化
  • 如何查詢網(wǎng)站的備案信息國際實時新聞
  • 創(chuàng)衛(wèi)網(wǎng)站 建設(shè) 方案青島seo經(jīng)理
  • 河北 石家莊 網(wǎng)站建設(shè)青島百度競價
  • 可做外鏈的視頻網(wǎng)站銀川seo
  • vue做的網(wǎng)站多么鄭州網(wǎng)絡(luò)推廣哪個好
  • 菏澤做網(wǎng)站電話關(guān)鍵詞詞庫
  • 手機(jī)音樂網(wǎng)站程序源碼百度點擊器找名風(fēng)
  • 網(wǎng)站建設(shè) 工具廈門seo排名優(yōu)化公司
  • 淄博網(wǎng)站建設(shè)公司推薦iis7站長工具
  • 網(wǎng)站域名解析錯誤怎么解決廣告優(yōu)化
  • 南昌專業(yè)網(wǎng)站建設(shè)競價點擊軟件排名
  • 上海專業(yè)網(wǎng)站建設(shè)價格抖音seo軟件工具
  • wordpress用戶關(guān)系360搜索關(guān)鍵詞優(yōu)化軟件
  • 做vi的網(wǎng)站cpu優(yōu)化軟件
  • 便宜建站怎么自己找外貿(mào)訂單
  • 揭陽購物網(wǎng)站開發(fā)設(shè)計東莞網(wǎng)絡(luò)推廣培訓(xùn)
  • 青島網(wǎng)站建設(shè)的流程有哪些關(guān)鍵詞排名工具
  • 做網(wǎng)站就必須要開公司嗎珠海網(wǎng)站建設(shè)優(yōu)化
  • 免費(fèi)的網(wǎng)站在線客服軟件營銷案例100例小故事及感悟
  • 網(wǎng)站開發(fā)的英文文獻(xiàn)互聯(lián)網(wǎng)營銷師培訓(xùn)課程
  • 新手想寫小說怎么做網(wǎng)站互聯(lián)網(wǎng)廣告平臺排名
  • 電商商城系統(tǒng)免費(fèi)seo排名點擊器
  • 汽車網(wǎng)站建設(shè)論壇網(wǎng)絡(luò)營銷渠道有哪三類
  • jquery 的網(wǎng)站模板seo手機(jī)搜索快速排名
  • 哪個網(wǎng)站可以做水果銷售代理深圳知名seo公司
  • 一般做網(wǎng)站的在哪里找代寫稿子的平臺
  • wordpress django廣東seo快速排名
  • 嘉祥網(wǎng)站建設(shè)哪家好游戲代理