大丰做网站建设的公司电子商务的网站有哪些

张小明 2026/1/2 13:46:31
大丰做网站建设的公司,电子商务的网站有哪些,苏州网站建设有限公司,给网站做解答是干嘛的设计概念Channel初始化创建任务子进程工作轮询方案分配工作关闭子进程和管道Main设计概念 进程池#xff0c;即我们可以预先创建一堆子进程和对应的管道。等父进程有任务时派发给子进程工作。这样就可以节省开辟进程的花销#xff1a; 当没有任务时#xff0c;即管道为空…设计概念Channel初始化创建任务子进程工作轮询方案分配工作关闭子进程和管道Main设计概念进程池即我们可以预先创建一堆子进程和对应的管道。等父进程有任务时派发给子进程工作。这样就可以节省开辟进程的花销当没有任务时即管道为空。那么子进程就是阻塞状态不会影响其他进程工作效率。但是注意我们要将任务均衡地派发给子进程即实现负载均衡Channel首先我们要设计一个方案让父进程能统一管理与子进程之间的管道最好的方法就是封装一个类。那么类的成员变量必然要有管道的写端fd、子进程的pid还可以有给子进程的编号。classChannel{public:Channel(intwfd,pid_t id,conststd::stringname):_wfd(wfd),_subprocessid(id),_name(name){}intGetWfd(){return_wfd;}pid_tGetPidProcessId(){return_subprocessid;}std::stringGetName(){return_name;}//关闭写端voidColseChannel(){close(_wfd);}//等待子进程voidWait(){pid_t ridwaitpid(_subprocessid,nullptr,0);if(rid0){std::coutwaitridsuccess!std::endl;}}~Channel(){}private:int_wfd;pid_t _subprocessid;std::string _name;};初始化接下来我们要初始化Channel数组。根据要创建的worker个数num我们可以写一个简单的for循环创建管道和子进程。由子进程关闭写端父进程关闭读端即可。但是我们要注意一个细节这里以创建两个子进程举例这里先创建第一个worker然后分别关闭读写端此时我们创建第二个worker然后分别关闭读写端这时我们发现第二个子进程对第一个管道的写端并没有关闭此时有可能造成父进程最后无法结束进程。因此我们在创建新的worker时要将前面的worker的写端关闭voidCreatChannelAndSub(intnum,std::vectorChannel*channels,task_t task){for(inti0;inum;i){intpipefd[2]{0};intnpipe(pipefd);//创建管道失败if(n0)exit(1);//创建子进程pid_t idfork();if(id0){//非空就要关闭前面的写端if(!channels-empty()){for(autochannel:*channels)channel.ColseChannel();}close(pipefd[1]);//重定向到标准输入dup2(pipefd[0],0);//回调函数task();close(pipefd[0]);exit(0);}//父进程std::string channel_nameChannel-std::to_string(i);close(pipefd[0]);channels-emplace_back(pipefd[1],id,channel_name);}}创建任务我们来实现不同的任务以分配给子进程首先重命名下函数指针用以实现回调函数随意实现三个简单的任务voidPrint(){std::coutI am print taskstd::endl;}voidDownLoad(){std::coutI am download taskstd::endl;}voidFlush(){std::coutI am flush taskstd::endl;}创建回调表分配任务intSelectTask(){returnrand()%TaskNum;}执行任务voidExcuteTask(intnumber){if(number0||number2)return;tasks[number];}子进程工作以及有了上面的一系列任务我们是时候给子进程工作了voidwork(){while(true){intcommand0;intnread(0,command,sizeof(command));if(nsizeof(int)){std::coutpid is:getpid()handler taskstd::endl;ExcuteTask(command);}//写端关闭if(n0){std::coutsub process:getpid() quitstd::endl;break;}}}轮询方案前面提到我们要实现负载均衡这里可以简单实现为轮询。即轮流给子进程派送任务intNextChannel(intchannelnum){staticintnext0;intchannelnext;next;next%channelnum;returnnext;}分配工作子进程的工作也有了轮询方案也有了就可以给子进程正是分配工作了voidSendTaskCommand(Channelchannel,inttaskcommand){write(channel.GetWfd(),taskcommand,sizeof(int));}voidctrlProcessOnce(std::vectorChannelchannels){sleep(1);//挑选任务inttaskcommandSelectTask();//挑选信道和进程intchannel_indexNextChannel(channels.size());//发送任务SendTaskCommand(channels[channel_index],taskcommand);std::coutstd::endl;std::couttaskcommand:taskcommandchannel:channels[channel_index].GetName()\sub process:channels[channel_index].GetPidProcessId()std::endl;}voidctrlProcess(std::vectorChannelchannels,inttimes-1){if(times0){while(times--)ctrlProcessOnce(channels);}else{while(true)ctrlProcessOnce(channels);}}关闭子进程和管道有了前面关闭子进程所有写端的处理我们能直接关闭子进程的读端进而使子进程退出对子进程等待即可voidCleanUpChannel(std::vectorChannelchannels){for(autochannel:channels){channel.ColseChannel();channel.Wait();}}Main接下来就是在main函数里安排代码执行的顺序,我们还可以通过选项的形式控制生成的子进程数量intmain(intargc,char*argv[]){if(argc!2){std::cerrUsage:argv[0] processnumstd::endl;}intnumstd::stoi(argv[1]);std::vectorChannelchannels;//1.创建子进程和信道CreatChannelAndSub(num,channels,work);//2.控制子进程ctrlProcess(channels,5);//3.回收资源CleanUpChannel(channels);return0;}来尝试运行代码完整代码
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设银行贵阳银行下载官方网站对中国建设银行网站的优点

Excalidraw集成AI功能后,绘图效率提升十倍 在一次跨时区的远程架构评审会上,团队争论了整整40分钟——不是因为技术方案有分歧,而是没人能快速画出清晰的系统拓扑。有人用PPT拉线条,有人在纸上拍照上传,最终拼凑出的图…

张小明 2025/12/26 2:10:03 网站建设

赣县区建设局网站做网站的厂家

第一章:AI模型Docker容器化部署概述在现代人工智能应用开发中,将训练好的AI模型高效、稳定地部署到生产环境是关键环节。Docker容器化技术凭借其轻量、可移植和环境隔离的特性,成为AI模型部署的首选方案。通过容器化,开发者可以将…

张小明 2025/12/26 0:36:42 网站建设

做婚庆网站陕西网

你是否厌倦了每次重装系统都要重新配置心爱的软件?是否希望将工作环境完整打包,实现真正的"即插即用"?本文将为你揭示Windows软件便携化的完整技术方案,从底层原理到实战操作,带你掌握将任意软件改造为绿色便…

张小明 2025/12/25 10:26:31 网站建设

国际摄影作品网站网站的内容规划怎么写

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个AI工具,能够自动检测Adobe Genuine Service Alert弹窗,并提供一键解决方案。工具应具备以下功能:1. 实时监控系统弹窗;2. 识…

张小明 2025/12/27 1:43:37 网站建设

食品网站建设案例网站建设属于什么广告没

Langchain-Chatchat用于研发文档管理的实践案例 在芯片设计公司的一次内部复盘会上,一位资深工程师无奈地提到:“我们团队最近三次流片失败,两次都源于用错了旧版DDR配置参数。”这并非孤例。随着研发体系日益复杂,技术文档数量呈…

张小明 2025/12/26 21:50:33 网站建设

兼职网站高中生在家可做关键词快速排名怎么做

前言If you have any questions, feel free to communicate at any timeRecord each screen with code【V】【Guste8868】在工业控制等超宽温(-30~85℃工作)场景下,17.0 英寸高色域显示模组需兼具温度适应性与色彩精准度。友达 G170ETN02.0 凭…

张小明 2025/12/27 0:18:52 网站建设