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

免费建网win7优化极致性能

免费建网,win7优化极致性能,团员密码忘了,wordpress客户端登陆不了管道 管道是Unix中最古老的进程间通信的形式。 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 匿名管道 #include unistd.h 功能:创建一无名管道 原型 int pipe(int fd[2]); 参数 fd#xff1a;文件描述符数组,其中fd[0]表示读端, fd[1]表示写端 …管道 管道是Unix中最古老的进程间通信的形式。 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 匿名管道 #include unistd.h 功能:创建一无名管道 原型 int pipe(int fd[2]); 参数 fd文件描述符数组,其中fd[0]表示读端, fd[1]表示写端 返回值:成功返回0失败返回错误代码 管道文件时一种内存级文件没有名称故为匿名管道 父进程打开文件然后fork创建子进程子进程会继承父进程文件描述符表中的内容。 然后两个进程即可看到同一份文件。 一般而言管道只能用来进行单向的数据通信。 为什么让父进程以读和写的方式打开同一个文件 为了让子进程看到读写端。 int fds[2];int npipe(fds); 代码实现  //1.创建管道文件打开读写端int fds[2];int npipe(fds);assert(n0);//2.forkpid_t idfork();assert(id0);if(id0){//子进程写入close(fds[0]);const char* s子进程正在向父进程发消息;int cnt0;while(true){cnt;char buffer[1024];snprintf(buffer,sizeof buffer,child-parent say: %s[%d][%d],s,cnt,getpid());write(fds[1],buffer,sizeof(buffer));//系统接口不需要考虑\0sleep(1);}close(fds[1]);exit(0);}close(fds[1]);while(true){char buffer[1024];ssize_t sread(fds[0],buffer,sizeof(buffer)-1);if(s0)//s代表读到的字节数buffer[s]0;coutGet Message # buffer| mypid: getpid()endl;}nwaitpid(id,nullptr,0);assert(nid);close(fds[0]); 命名管道 命名管道可以从命令行上创建命令行方法是使用下面这个命令 mkfifo filename命名管道也可以从程序里创建相关函数有 int mkfifo(const char *filename,mode_t mode); 创建命名管道: int main(int argc, char *argv[]) {mkfifo(p2, 0644);return 0; } comm.hpp #pragma once#includeiostream #includecassert #includecstdio #includecstring #includestring #includeunistd.h #includesys/wait.h #includesys/types.h #includesys/stat.h #includecerrno #includefcntl.h using namespace std; #define NAMED_PIPE /tmp/mypipe.testbool createFifo(const string path) {int nmkfifo(path.c_str(),0666);if(n0) return true;else{couterrno: errno err string: strerror(errno)endl;return false;} } void removeFifo(const string path) {int nunlink(path.c_str());assert(n0); } server.cc #includecomm.hppusing namespace std;int main() {bool rcreateFifo(NAMED_PIPE);assert(r);coutserver beginendl;int rfdopen(NAMED_PIPE,O_RDONLY);coutserver endendl;if(rfd0) exit(1);//readchar buffer[1024];while (true){ssize_t sread(rfd,buffer,sizeof(buffer)-1);if(s0){buffer[s]0;coutclient-server# buffer;}else if(s0){coutclient quit , me tooendl;break;}else{couterr string--------strerror(errno)endl;break;}}close(rfd);removeFifo(NAMED_PIPE);return 0; } clent.cc #includecomm.hppusing namespace std;int main() {coutclient beginendl;int wfd open(NAMED_PIPE, O_WRONLY);coutclient endendl;if (wfd 0)exit(1);// writechar buffer[1024];while (true){cout Please Say# ;fgets(buffer, sizeof(buffer), stdin);if(strlen(buffer)0) buffer[strlen(buffer)-1]0;ssize_t n write(wfd, buffer, strlen(buffer));assert(n strlen(buffer));}close(wfd);return 0; }管道的读写特征 1. 读慢写快如果管道中没有了数据读端在读默认会直接阻塞当前正在读取的进程 2.读快写慢管道是一个固定大小的缓冲区写端写满时会阻塞等待对方读取 3.写端关闭读到0读端将数据读完后读到0结束进程。 4.读关闭在写就没有意义了OS会给写进程发送信号13将其终止。 管道的特征 1.管道的声明周期随进程 2.管道可以用来进行具有血缘关系的进程之间进行通信常用于父子通信 3.管道是面向字节流的。按设置的最大字节数去读。 4.管道通信---半双工 sleep 1000 | sleep 2000 |:即为匿名管道 sleep的父进程为bash 综合案例 基于匿名管道的进程池设计 #includeiostream #includevector #includecassert #includecstdio #includecstring #includectime #includestring #includeunistd.h #includesys/wait.h #includesys/types.husing namespace std; #define PROCESS_NUM 5 #define MakeSeed() srand((unsigned long)time(nullptr)) typedef void(*func_t)(); void downLoadTask() {coutgetpid() : downLoadTask()\nendl;sleep(1); } void ioTask() {coutgetpid() : ioTask()\nendl;sleep(1); } void flushTask() {coutgetpid() : flustTask()\nendl;sleep(1); }class subEp { public:subEp(pid_t subId,int writeFd):subId_(subId),writeFd_(writeFd){char nameBuffer[1024];snprintf(nameBuffer,sizeof nameBuffer,process-%d[pid(%d)-fd(%d)],num,subId_,writeFd_);name_nameBuffer;} public:static int num;string name_;pid_t subId_;int writeFd_; }; int subEp::num0;void sendTask(const subEp process,int taskNum) {coutsend task num taskNum send to - process.name_endl;ssize_t nwrite(process.writeFd_,taskNum,sizeof(taskNum));assert(nsizeof(int)); } int recvTask(int readFd) {int code0;ssize_t sread(readFd,code,sizeof code);//assert(ssizeof(int));if(s4) return code;else if(s0) return -1;else return 0; } void createSubProcess(vectorsubEp* subs,vectorfunc_t funcMap) {for(int i0;iPROCESS_NUM;i){int fds[2];int npipe(fds);//父进程打开的文件是会被子进程共享的pid_t idfork();if(id0){//子进程close(fds[1]);while (true){//1.获取命令玛如果没有子进程应阻塞int commandCode recvTask(fds[0]);//2.完成任务if(commandCode0 commandCodefuncMap.size()) funcMap[commandCode]();else if(commandCode-1) break;;}exit(0);}close(fds[0]);subEp sub(id,fds[1]);subs-push_back(sub);} } void loadTaskFunc(vectorfunc_t* out) {assert(out);out-push_back(downLoadTask);out-push_back(ioTask);out-push_back(flushTask); } void loadBalanceContrl(const vectorsubEp subs,const vectorfunc_t funcMap,int count) {int processnumsubs.size();int tasknumfuncMap.size();//int cntsubs.size();bool forever(count0)?true:false;while(true){//1.选择一个子进程---vectorsubEp - indexint subIdxrand()%processnum;//2.选择一个任务--- vectorfunc_t---indexint taskIdxrand()%tasknum;//3.任务发送给选择的进程sendTask(subs[subIdx],taskIdx);sleep(1);if(!forever){count--;if(count0) break;}}//write quit - read 0for(int i0;iprocessnum;i) close(subs[i].writeFd_); } void waitProcess(vectorsubEp processes) {int processnumprocesses.size();for(int i0;iprocessnum;i){waitpid(processes[i].subId_,nullptr,0);coutwait sub process success ...processes[i].subId_endl;} } int main() {MakeSeed();//1.建立子进程并建立和子进程通信的信道vectorfunc_t funcMap;loadTaskFunc(funcMap);vectorsubEp subs;createSubProcess(subs,funcMap);//2.父进程控制子进程int taskNum3;loadBalanceContrl(subs,funcMap,taskNum);//3.回收子进程信息waitProcess(subs);return 0; }
http://www.eeditor.cn/news/120609/

相关文章:

  • vps装网站管理系统万家灯火网站建设
  • 建设班级网站首页施工合同电子版
  • 网站开发和推广方案网页图片怎么居中
  • 医疗器械公司网站建设查询网站死链接
  • 网站如何做地面推广网站代理如何做
  • 南京网站建设电话导入数据wordpress
  • 微信小程序做网站西部数码网站管理助手3.1
  • 网站开发需要学企业管理咨询合同模板
  • 网站刷流量对网站有影响吗分类用wordpress
  • 昆山市有没有做网站设计的wordpress模板免费下载
  • 国内好看的网站设计项目经理招聘网最新招聘信息
  • 传统网站建设架构昆明网站开发公司电话
  • 招聘网站代做wordpress dopt
  • 旅游网站建设答辩ppt模板吉林省建设标准化网站
  • 更新wordpress 504win7优化大师
  • 桂林有名网站制作公司apache创建WordPress
  • 做网站 图文教程百度竞价推广投放
  • 公司网站建设服务费怎么做账软件外包服务内容
  • 网站做支付宝和网银接口连云港建设网站公司
  • 网站推广的渠道有嵌入式应用软件开发流程
  • 公司建立网站的作用有卡片式多图流的WordPress主题模板
  • 不懂的做网站软件工程培训班出来好就业吗
  • 新乡哪有做网站的做网站 网上接单
  • ppt怎么做网站上海网站推广珈维
  • 银川网站seo广州专业网站建设后台管理便捷
  • 记事本做网站如何添加图片seo是什么工作内容
  • 英文商城网站建设基于android的移动互联网开发
  • 写作网站virwordpress的html
  • 甘肃网站建设域名注册公司基础微网站开发咨询
  • 政务网站建设的重要性北京软件开发公司推荐