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

做房产网站长网站开发提供图片加载速度

做房产网站长,网站开发提供图片加载速度,上海闵行职业技术学院,网站构建的工作并发编程和异步编程是程序员的基本技能#xff0c;各种高级语言也开发出了一些高级但晦涩的机制#xff08;比如C#的await/async#xff09;。并发编程主要是指多进程、多线程和交替执行#xff0c;异步编程则是指多个并发执行任务之间的交互。 目录 并发和异步的技术介绍…        并发编程和异步编程是程序员的基本技能各种高级语言也开发出了一些高级但晦涩的机制比如C#的await/async。并发编程主要是指多进程、多线程和交替执行异步编程则是指多个并发执行任务之间的交互。 目录 并发和异步的技术介绍 多进程的基本技术 多进程框架代码 多线程的基本技术C11 多线程框架代码 并发和异步的技术介绍 并发的几种方式的区别 多进程 进程之间地址空间隔离不能共享数据需要通过IPC、文件、信号等进程间交互机制交互交互困难但容易调试程序也比较可靠一个进程异常不会影响其它进程。多线程 共享内存地址空间可以随意访问全部数据必须正确互斥才能避免数据被破坏。交替执行 比如await/async所有后台任务都是在同一个线程里执行的这依赖一套复杂的接口比较晦涩。一般采用自定义接口轮询执行的方式这要求每个任务都比较小执行时间可控比如redis。 任务交互的不同方式 内存 速度最快只适用于多线程有并发冲突问题。共享内存 速度最快适用于多进程有并发冲突问题而且不可以动态增长。信号、信号量 不能携带数据只能用于控制用起来费劲SOCKET、管道 可靠但是和服务器、客户端编程一样复杂文件 简单不用学习新技术有并发冲突问题 多进程的基本技术 fork() 复制进程自身双返回在父进程返回子进程的pid在子进程返回0waitpid() 获取进程状态等待进程结束WIFEXITED() 判断进程状态码是否表示进程是正常退出获取返回值 获取返回值的宏兼容性并不好具体看后面的源代码 这几个技术的详细介绍应该很容易找到我们关心的是如何写出一个套路代码。以下是一个多进程的框架程序能够起一组子进程并等待所有子进程结束。 多进程框架代码 首先定义子进程的执行代码的接口 class IChildProcess { public:virtual int doChildProcess(long max_process, long i_process) 0; };纯虚函数doChildProcess是子进程的功能入口以最大进程数和子进程序号为参数子进程序号从0开始。按照C语言的习惯这个接口应该加一个void*参数供调用方传入来控制子进程的功能但是这里写成了虚函数直接在类里面定义就可以了这是C比C方便的地方。 多进程框架 int SimpleMultiProcess(IChildProcess * pChild,long max_process, char const* title){pChild-isThread false;thelog 开始执行 title 进程 max_process endi;time_t t1 time(NULL);long i_p;for (i_p 0; i_p max_process; i_p){pid_t pid fork();if (pid 0){thelog fork失败 ende;return __LINE__;}else if (0 pid)//子进程{exit(pChild-doChildProcess(max_process, i_p));//子进程在这里通过exit结束}}int status;int ret 0;stringstream msg;for (i_p 0; i_p max_process; i_p){pid_t pid waitpid(-1, status, 0);//等待任何一个子进程结束原则上这个循环写法有问题如果程序还有其它地方创建子进程则这里程序行为就不符合预期if (-1 pid){thelog waitpid 出错 strerror(errno) ende;return __LINE__;}else{if (WIFEXITED(status)){int tmpret (0xFF00 status) / 256;//WEXITSTATUS宏无法识别if (0 ! tmpret){msg 进程 pid 出错,返回值 tmpret 状态码 status endl;ret tmpret;}}else{ret 2;msg 进程 pid 异常,状态码 status endl;}}}int timespan time(NULL) - t1;if (msg.str().size() ! 0)thelog msg.str() ende;thelog 执行 title 完成 进程 max_process 总用时 timespan /秒 endi;return ret;}以执行代码的接口为参数传入最大进程数title没什么用只是用来在日志里显示。         多线程的基本技术C11 线程和原子大概是C11最棒的新功能了吧。 std::thread 构造函数直接创建子线程std::thread.join 等待子线程结束join的意思是“合并”两个线程变成一个 为啥以前的线程库都那么复杂啊 多线程框架代码 仍然是上面多进程的执行代码的接口 class IChildProcess { public:virtual int doChildProcess(long max_process, long i_process) 0; };框架代码比多进程简单 int SimpleMultiThread(IChildProcess* pChild, long max_thread, char const* title){pChild-isThread true;thelog 开始执行 title 线程 max_thread endi;time_t t1 time(NULL);long i_p;vectorthread * threads;for (i_p 0; i_p max_thread; i_p){threads.push_back(new thread(doChildThread, pChild, max_thread, i_p));}for (auto v:threads){v-join();}int timespan time(NULL) - t1;thelog 执行 title 完成 线程 max_thread 总用时 timespan /秒 endi;return 0;}这个代码基本就是一目了然了。当然了多线程最大困难在于安全地交互。 这里是结束
http://www.yutouwan.com/news/86544/

相关文章:

  • 建筑公司网站起名下面哪个不是网页制作工具
  • 便宜的手机网站建设微信公众号登录官方入口
  • 诸城手机网站建设农产品网站建设投标书
  • 网站建设项目方案ppt做网站编辑需要看什么书
  • 什么是网站开发类课程安徽徐州网站建设公司
  • 耒阳市古雍网站建设店广告法
  • 做调查问卷能挣钱的网站盛唐网站建设
  • 网站制作公司排名前十上海网站建站建设
  • 做推广适合哪些网站吗全球互联网十大网站
  • 怎么查看网站的空间商现在有什么推广平台
  • 单位建设网站的作用意义什么网站能接单做网站
  • 网站没服务器行吗软件商店应用
  • 如何请人创建一个网站深圳网站建设的价格
  • php网站建设制作服务怎么样把以前做的网站删除
  • 爱站网为什么不能用了重庆工商学校官网
  • 网站建设及推广费记什么科目wordpress条文件夹
  • 公司网站发展策划书如何做好一名销售
  • 网站建设的拓扑结构公司网站的关键词推广怎么做
  • 怎么制作一个网站内容软件开发建设网站
  • 济南智能网站建设服务网站加视频
  • 中小企业网站开发wordpress站点目录
  • 电商设计灵感网站番禺厂家关键词优化
  • 网站公司怎么做推广网络营销服务商
  • 个人社团网站怎么做商业计划书免费word版
  • 网站技术方案wordpress模板 开发
  • 杭州哪些做网站公司好网络营销方式多样
  • 淘宝店铺不允许发布网站建设了制作公司网站需要购买域名和服务器吗
  • 西安网站建设gj网架公司有哪些公司
  • 如何查看网站的关键词常州网站建设公司报价
  • 一级a做爰全过程片视频网站wordpress主题配置文件