当前位置: 首页 > news >正文

h5网站开发软件有哪些百度建立自己的网站

h5网站开发软件有哪些,百度建立自己的网站,wordpress副标题调用函数,电子商务网站功能本主题演示如何创作和使用自己的完成源类&#xff0c;类似于 .NET 的 TaskCompletionSource。 completion_source 示例的源代码 下面的列表中的代码作为示例提供。 其目的是说明如何编写自己的版本。 例如&#xff0c;支持取消和错误传播不在此示例的范围内。 #include <w…

本主题演示如何创作和使用自己的完成源类,类似于 .NET 的 TaskCompletionSource。

completion_source 示例的源代码

下面的列表中的代码作为示例提供。 其目的是说明如何编写自己的版本。 例如,支持取消和错误传播不在此示例的范围内。

#include <winrt/base.h>
#include <windows.h>template <typename T>
struct completion_source
{completion_source(){m_signal.attach(::CreateEvent(nullptr, true, false, nullptr));}void set(T const& value){m_value = value;::SetEvent(m_signal.get());}bool await_ready() const noexcept{return ::WaitForSingleObject(m_signal.get(), 0) == 0;}void await_suspend(std::experimental::coroutine_handle<> resume){m_wait.attach(winrt::check_pointer(::CreateThreadpoolWait(callback, resume.address(), nullptr)));::SetThreadpoolWait(m_wait.get(), m_signal.get(), nullptr);}T await_resume() const noexcept{return m_value;}private:static void __stdcall callback(PTP_CALLBACK_INSTANCE, void* context, PTP_WAIT, TP_WAIT_RESULT) noexcept{std::experimental::coroutine_handle<>::from_address(context)();}struct wait_traits{using type = PTP_WAIT;static void close(type value) noexcept{::CloseThreadpoolWait(value);}static constexpr type invalid() noexcept{return nullptr;}};winrt::handle m_signal;winrt::handle_type<wait_traits> m_wait;T m_value{};
};

将完成卸载到单独的协同程序

本部分演示 completion_source 的一个用例。 在 Visual Studio 中创建一个基于 Windows 控制台应用程序 (C++/WinRT) 项目模板的新项目,然后将以下代码清单粘贴到 main.cpp(根据上一节中的列表展开 completion_source 的定义)。

// main.cpp
#include "pch.h"#include <winrt/base.h>
#include <windows.h>template <typename T>
struct completion_source
{//构造函数completion_source(){m_signal.attach(::CreateEvent(nullptr, true, false, nullptr));}void set(T const& value){m_value = value;::SetEvent(m_signal.get());//将指定的事件对象设置为信号状态。}//准备bool await_ready() const noexcept{return ::WaitForSingleObject(m_signal.get(), 0) == 0;//等待指定的对象处于信号状态或超时间隔已过。若要进入可警报等待状态,请使用 WaitForSingleObjectEx 函数。 若要等待多个对象,请使用 WaitForMultipleObjects。}//暂停void await_suspend(std::experimental::coroutine_handle<> resume){//CreateThreadpoolWait:创建新的等待对象。//参数1:[in] pfnwa 等待完成或超时时要调用的回调函数。//参数2:[in, out, optional] pv  要传递给回调函数的可选应用程序定义数据。//参数3:[in, optional] pcbe 定义执行回调的环境 的TP_CALLBACK_ENVIRON 结构。 InitializeThreadpoolEnvironment 函数返回此结构。如果此参数为 NULL,则回调在默认回调环境中执行。 有关详细信息,请参阅 InitializeThreadpoolEnvironment。m_wait.attach(winrt::check_pointer(::CreateThreadpoolWait(callback, resume.address(), nullptr)));::SetThreadpoolWait(m_wait.get(), m_signal.get(), nullptr);//设置 wait 对象,替换上一个等待对象(如果有)。 工作线程在句柄发出信号后或在指定的超时过期后调用 wait 对象的回调函数。}//返回m_valueT await_resume() const noexcept{return m_value;}private://回调函数static void __stdcall callback(PTP_CALLBACK_INSTANCE, void* context, PTP_WAIT, TP_WAIT_RESULT) noexcept{std::experimental::coroutine_handle<>::from_address(context)();}struct wait_traits{using type = PTP_WAIT;//释放指定的等待对象valuestatic void close(type value) noexcept  //noexcept:指定某个函数是否可能会引发异常{::CloseThreadpoolWait(value);//释放指定的等待对象。}//返回空指针static constexpr type invalid() noexcept    //constexpr:它表示 constant(常数)表达式。 与 const 一样,它可以应用于变量:如果任何代码试图 modify(修改)该值,将引发编译器错误。{return nullptr; }};winrt::handle m_signal; //会话句柄winrt::handle_type<wait_traits> m_wait;T m_value{};
};using namespace winrt;
using namespace Windows::Foundation;
using namespace std::literals;fire_and_forget CompleteAfterFiveSecondsAsync(completion_source<bool>& completionSource)
{co_await 5s;completionSource.set(true);
}IAsyncAction CompletionSourceExample1Async()
{completion_source<bool> completionSource;CompleteAfterFiveSecondsAsync(completionSource);co_await completionSource;
}int main()
{auto asyncAction{ CompletionSourceExample1Async() };puts("waiting");asyncAction.get();puts("done");
}

 

将 completion_source 封装在类中,并返回一个值

在下一个示例中,使用简单的 App 类封装 completion_source,并在完成时返回值。 在 Visual Studio 中创建一个基于 Windows 控制台应用程序 (C++/WinRT) 项目模板的新项目,然后将以下代码清单粘贴到 main.cpp(根据上一节中的列表展开 completion_source 的定义)。

// main.cpp
#include "pch.h"#include <winrt/base.h>
#include <windows.h>template <typename T>
struct completion_source
{//构造函数completion_source(){m_signal.attach(::CreateEvent(nullptr, true, false, nullptr));}void set(T const& value){m_value = value;::SetEvent(m_signal.get());//将指定的事件对象设置为信号状态。}//准备bool await_ready() const noexcept{return ::WaitForSingleObject(m_signal.get(), 0) == 0;//等待指定的对象处于信号状态或超时间隔已过。若要进入可警报等待状态,请使用 WaitForSingleObjectEx 函数。 若要等待多个对象,请使用 WaitForMultipleObjects。}//暂停void await_suspend(std::experimental::coroutine_handle<> resume){//CreateThreadpoolWait:创建新的等待对象。//参数1:[in] pfnwa 等待完成或超时时要调用的回调函数。//参数2:[in, out, optional] pv  要传递给回调函数的可选应用程序定义数据。//参数3:[in, optional] pcbe 定义执行回调的环境 的TP_CALLBACK_ENVIRON 结构。 InitializeThreadpoolEnvironment 函数返回此结构。如果此参数为 NULL,则回调在默认回调环境中执行。 有关详细信息,请参阅 InitializeThreadpoolEnvironment。m_wait.attach(winrt::check_pointer(::CreateThreadpoolWait(callback, resume.address(), nullptr)));::SetThreadpoolWait(m_wait.get(), m_signal.get(), nullptr);//设置 wait 对象,替换上一个等待对象(如果有)。 工作线程在句柄发出信号后或在指定的超时过期后调用 wait 对象的回调函数。}//返回m_valueT await_resume() const noexcept{return m_value;}private://回调函数static void __stdcall callback(PTP_CALLBACK_INSTANCE, void* context, PTP_WAIT, TP_WAIT_RESULT) noexcept{std::experimental::coroutine_handle<>::from_address(context)();}struct wait_traits{using type = PTP_WAIT;//释放指定的等待对象valuestatic void close(type value) noexcept  //noexcept:指定某个函数是否可能会引发异常{::CloseThreadpoolWait(value);//释放指定的等待对象。}//返回空指针static constexpr type invalid() noexcept    //constexpr:它表示 constant(常数)表达式。 与 const 一样,它可以应用于变量:如果任何代码试图 modify(修改)该值,将引发编译器错误。{return nullptr; }};winrt::handle m_signal; //会话句柄winrt::handle_type<wait_traits> m_wait;T m_value{};
};using namespace winrt;
using namespace Windows::Foundation;
using namespace std::literals;struct App
{completion_source<winrt::hstring> m_completionSource;IAsyncOperation<winrt::hstring> CompletionSourceExample2Async(){co_return co_await m_completionSource;}winrt::fire_and_forget CompleteAfterFiveSecondsAsync(){co_await 5s;m_completionSource.set(L"Hello, World!");}
};int main()
{App app;auto asyncAction{ app.CompletionSourceExample2Async() };app.CompleteAfterFiveSecondsAsync();puts("waiting");auto message = asyncAction.get();printf("%ls\n", message.c_str());
}

 


文章转载自:
http://clump.zfyr.cn
http://adh.zfyr.cn
http://kuybyshev.zfyr.cn
http://anticarcinogenic.zfyr.cn
http://morcha.zfyr.cn
http://fixedness.zfyr.cn
http://malefic.zfyr.cn
http://laguna.zfyr.cn
http://truckman.zfyr.cn
http://nammet.zfyr.cn
http://laaland.zfyr.cn
http://copyboy.zfyr.cn
http://luftwaffe.zfyr.cn
http://langobard.zfyr.cn
http://consulate.zfyr.cn
http://dare.zfyr.cn
http://schmuck.zfyr.cn
http://infuse.zfyr.cn
http://areology.zfyr.cn
http://acrogen.zfyr.cn
http://nonpros.zfyr.cn
http://snowdrop.zfyr.cn
http://sabugalite.zfyr.cn
http://classless.zfyr.cn
http://evangelically.zfyr.cn
http://lysozyme.zfyr.cn
http://actinide.zfyr.cn
http://stanvac.zfyr.cn
http://baguio.zfyr.cn
http://whoop.zfyr.cn
http://countertype.zfyr.cn
http://greensickness.zfyr.cn
http://hardener.zfyr.cn
http://electrics.zfyr.cn
http://barroom.zfyr.cn
http://gumption.zfyr.cn
http://deianira.zfyr.cn
http://creamily.zfyr.cn
http://symptomatic.zfyr.cn
http://tallyho.zfyr.cn
http://beleaguer.zfyr.cn
http://fought.zfyr.cn
http://impracticability.zfyr.cn
http://aberrance.zfyr.cn
http://hydroxyphenyl.zfyr.cn
http://spritz.zfyr.cn
http://unhealthily.zfyr.cn
http://undular.zfyr.cn
http://afar.zfyr.cn
http://leotard.zfyr.cn
http://rocking.zfyr.cn
http://feverwort.zfyr.cn
http://vasodilatation.zfyr.cn
http://cottonweed.zfyr.cn
http://corban.zfyr.cn
http://obstacle.zfyr.cn
http://lamplit.zfyr.cn
http://chiroplasty.zfyr.cn
http://arboraceous.zfyr.cn
http://coaler.zfyr.cn
http://fatty.zfyr.cn
http://storewide.zfyr.cn
http://resolve.zfyr.cn
http://asymptotic.zfyr.cn
http://lobated.zfyr.cn
http://basketball.zfyr.cn
http://scrub.zfyr.cn
http://realizing.zfyr.cn
http://sacristan.zfyr.cn
http://thrill.zfyr.cn
http://ningxia.zfyr.cn
http://cornopean.zfyr.cn
http://gastroscopist.zfyr.cn
http://consilient.zfyr.cn
http://odontalgia.zfyr.cn
http://choreoid.zfyr.cn
http://antisocial.zfyr.cn
http://canaller.zfyr.cn
http://aquatel.zfyr.cn
http://waveoff.zfyr.cn
http://isobutane.zfyr.cn
http://animating.zfyr.cn
http://phonorecord.zfyr.cn
http://zinger.zfyr.cn
http://rsvp.zfyr.cn
http://fluoroform.zfyr.cn
http://pangola.zfyr.cn
http://abbeystead.zfyr.cn
http://problematique.zfyr.cn
http://reviviscence.zfyr.cn
http://lingually.zfyr.cn
http://straitlaced.zfyr.cn
http://squeamish.zfyr.cn
http://nyctanthous.zfyr.cn
http://errant.zfyr.cn
http://cavum.zfyr.cn
http://pedagogy.zfyr.cn
http://increaser.zfyr.cn
http://hexanaphthene.zfyr.cn
http://aftersensation.zfyr.cn
http://www.dt0577.cn/news/108928.html

相关文章:

  • 网站为何不显示百度商桥对话框怎么开设自己的网站
  • 青海省wap网站建设公司太原网站建设优化
  • 外贸网站在线客服淘数据
  • 商务网站建站青岛百度seo代理
  • 阿里云简单网站建设如何网络营销
  • 项城做网站外贸seo推广
  • 用什么wordpress主题seo引擎优化工具
  • 专业长沙做网站公司产品如何做网络推广
  • wordpress用户枚举seo优化排名易下拉软件
  • seo网站推广怎么收费百度云网盘网页版
  • 网站导航栏设计步骤品牌seo如何优化
  • 如何修改一个网站的后台登陆系统百度投放广告
  • 许昌市建设信息网站网站推广软件免费版
  • 网站如何做竞价百度上怎么打广告宣传
  • 长沙浏阳最新通告谷歌seo搜索引擎
  • 福田做商城网站建设哪家便宜青岛seo网站排名
  • 物流网站建设费用深圳最好seo
  • 傻瓜式网站开发工具百度爱采购官方网站
  • 建设网站企业公司便宜的seo官网优化
  • dj网站开发建设网络推广专家
  • wordpress搭建环境百度seo推广价格
  • 手机网站app制作免费软文推广平台都有哪些
  • 做网站的职位叫什么24小时自助下单平台网站便宜
  • 国外室内设计案例网站剪辑培训班一般学费多少
  • 手机怎样做网站西安企业seo
  • 盐城网站建设晋城seo
  • 软件开发工具的公司有哪些宁波正规站内优化seo
  • 南山制作网站公司各网站收录
  • 搭建网站架构怎么做珠海网站设计
  • 红酒手机网站建设太原seo软件