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

广州购物网站建设价格网络营销推广的要点

广州购物网站建设价格,网络营销推广的要点,网站建设空间,高端网站建设北京协程,也叫微线程,多个协程在逻辑上是并发的,实际并发由用户控件。 在windows上引入了纤程(fiber)。 WinBase.h 中函数原型 #if(_WIN32_WINNT > 0x0400)// // Fiber begin //#pragma region Application Family or OneCore Family or Game…

协程,也叫微线程,多个协程在逻辑上是并发的,实际并发由用户控件。
在windows上引入了纤程(fiber)。
WinBase.h 中函数原型

#if(_WIN32_WINNT >= 0x0400)//
// Fiber begin
//#pragma region Application Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)#define FIBER_FLAG_FLOAT_SWITCH 0x1     // context switch floating pointWINBASEAPI
VOID
WINAPI
SwitchToFiber(_In_ LPVOID lpFiber);WINBASEAPI
VOID
WINAPI
DeleteFiber(_In_ LPVOID lpFiber);#if (_WIN32_WINNT >= 0x0501)WINBASEAPI
BOOL
WINAPI
ConvertFiberToThread(VOID);#endifWINBASEAPI
_Ret_maybenull_
LPVOID
WINAPI
CreateFiberEx(_In_     SIZE_T dwStackCommitSize,_In_     SIZE_T dwStackReserveSize,_In_     DWORD dwFlags,_In_     LPFIBER_START_ROUTINE lpStartAddress,_In_opt_ LPVOID lpParameter);WINBASEAPI
_Ret_maybenull_
LPVOID
WINAPI
ConvertThreadToFiberEx(_In_opt_ LPVOID lpParameter,_In_     DWORD dwFlags);#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion#pragma region Desktop Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)WINBASEAPI
_Ret_maybenull_
LPVOID
WINAPI
CreateFiber(_In_     SIZE_T dwStackSize,_In_     LPFIBER_START_ROUTINE lpStartAddress,_In_opt_ LPVOID lpParameter);WINBASEAPI
_Ret_maybenull_
LPVOID
WINAPI
ConvertThreadToFiber(_In_opt_ LPVOID lpParameter);#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion//
// Fiber end
//

一个简单的例子

#include <iostream>
#include <Windows.h>LPVOID mainFiber,workFiber;int i;void fiberProc(LPVOID lpFiberParameter)
{for(i = 0;i < 10; ++i){SwitchToFiber(mainFiber);}
}int main(int argc,char** argv,char** env)
{mainFiber = ConvertThreadToFiber(NULL);workFiber = CreateFiber(1024,fiberProc,NULL);SwitchToFiber(workFiber);std::cout << i << std::endl;SwitchToFiber(workFiber);std::cout << i << std::endl;DeleteFiber(workFiber);ConvertFiberToThread();return 0;}

windows 上Fiber的调度需要用户自己控制
简单做一个协程调度

#include <iostream>
#include <Windows.h>
#include <list>
#include <functional>using co_proc = std::function<void(void*)>;void __co_proc(LPVOID lpParam);static int ids = 0;class scheduler;
class corountine
{
public:co_proc proc_;void* param_;corountine(co_proc proc,void* param):proc_(proc), param_(param),isfinished(false),id(++ids){this->fiber = CreateFiber(1024,__co_proc,this);}virtual ~corountine(){DeleteFiber(this->fiber);}LPVOID fiber;bool isfinished;int id;scheduler* sch;
};class scheduler
{std::list<corountine*> cos_;
public:scheduler(){mainFiber = ConvertThreadToFiber(NULL);}virtual ~scheduler(){ConvertFiberToThread();}void push_corountine(corountine* co){co->sch = this;cos_.push_back(co);}void run(){while(!cos_.empty()) {auto* co = cos_.front();cos_.erase(cos_.begin());if (!co->isfinished) {SwitchToFiber(co->fiber);}if (!co->isfinished) {cos_.push_back(co);} else {delete co;}}}void yield(){SwitchToFiber(mainFiber);}LPVOID mainFiber;};void __co_proc(LPVOID lpParam)
{corountine* co = (corountine*)lpParam;co->isfinished = false;co->proc_(co->param_);co->isfinished = true;SwitchToFiber(co->sch->mainFiber); // 一定要加上这句,不然主线程会结束
}int main(int argc,char** argv,char** env)
{scheduler sch;sch.push_corountine(new corountine([&](void* p){for (int i = 0;i < 7; ++i){std::cout << "i:"<<i<<std::endl;sch.yield();}},nullptr));sch.push_corountine(new corountine([&](void* p){for (int j = 0;j < 4; ++j){std::cout << "j:"<<j<<std::endl;sch.yield();}},nullptr));sch.run();return 0;}
http://www.shuangfujiaoyu.com/news/54228.html

相关文章:

  • 网页设计新建站点域名注册免费
  • 阿勒泰建设招聘网站百度软件中心官网
  • 求2021没封的良心网址比优化更好的词是
  • 晋城做网站百度爱采购推广效果怎么样?
  • 做的最好的宠物网站chrome官网
  • 一般通过什么判断鱼的年龄seo技术教程博客
  • 什么是网站建设规划书站长工具综合查询ip
  • 如何用网站做淘宝联盟seo排名优化技术
  • 类wordpress免费seo网站优化工具
  • 微网站公司子域名网址查询
  • 如何做网站建设线下推广有哪几种渠道
  • 教育网站设计方案企业管理培训班哪个好
  • wordpress 计时杭州百度seo代理
  • 做资源分享网站银川网页设计公司
  • 哪个彩票网站做代理反水高盐酸达泊西汀片是治疗什么的药物
  • 93zyz资源网站生态文明建设为seo搜索引擎是什么意思
  • 免费门户网站搭建搜索引擎快速排名推广
  • 醴陵市城乡和规划建设局网站刷粉网站推广便宜
  • 百度云域名买了之后建设网站产品网络推广的方法
  • 百度联盟怎么做网站加入淘宝seo优化是什么意思
  • 长沙做产检玛丽亚m网站东莞免费网站建设网络营销
  • 邯郸网站建设的企业朋友圈广告投放价格表
  • 网站风格分析宁波seo网络推广外包报价
  • 河北省住房和建设厅网站seo优化主要工作内容
  • 专业做网站价格2022最新免费的推广引流软件
  • 排版设计图片上海seo网站推广公司
  • 大连网站专业制作郑州网站seo外包公司
  • t型布局网站的样子上海推广网站
  • 胶州胶东网站建设谷歌搜索引擎优化
  • 做网站靠什么收入知乎推广