linux 高并发,linux高并发服务器开发

  linux 高并发,linux高并发服务器开发

  多进程高并发设计框架建议根据cpu核心数设置子进程数。建议将相应的进程绑定到cpu。(cpu关联性)

  优势:

  充分利用多核系统的并发处理能力。(多个进程运行在多个不同的内核上)负载平衡。职责明确,管理流程只负责管理,工作流程负责处理业务逻辑。示例:

  multip_process.c

  #定义_ GNU _源

  #包含sched.h

  #包含stdio.h

  #包含stdlib.h

  #包括unistd.h

  #包含stdint.h

  //函数指针返回值xx参数

  typedef void(* spawn _ proc _ pt)(void * data);//接收void*类型参数的函数指针

  静态void worker _ process _ cycle(void * data);

  静态void start _ worker _ processes(int n);

  PID _ t spawn _ process(spawn _ proc _ pt proc,void *data,char * name);

  int main(int argc,char **argv){

  //调用以启动工作进程-4

  start _ worker _ processes(4);

  //管理子进程

  等待(空);

  }

  //推动者进程

  void start _ worker _ processes(int n){

  int I=0;

  for(I=n-1;我我- ){

  //第一个参数是工作进程的处理周期。

  spawn _ process(worker _ process _ cycle,(void *)(intptr_t) i, worker process );

  }

  }

  //创建子进程

  PID _ t spawn _ process(spawn _ proc _ pt proc,void *data,char *name){

  pid _ t pid

  PID=fork();//创建子进程

  开关(pid){

  案例1:

  fprintf(stderr, fork()在生成 %s\n ,name时失败);

  return-1;

  案例0:

  proc(数据);

  返回0;

  默认值:

  打破;

  }

  printf(start %s %ld\n ,name,(long int)PID);

  返回pid

  }

  //设置cpu关联并将进程绑定到其中一个核心。

  静态void worker _ process _ init(int worker){

  cpu _ set _ t cpu _ affinity

  //多核高并发处理

  CPU _ ZERO(CPU _ affinity);

  //参数-cpu号-掩码地址

  CPU_SET(worker % CPU_SETSIZE,CPU _ affinity);

  //sched_setaffinity

  if(sched_setaffinity(0,sizeof(cpu_set_t),cpu_affinity)==-1){

  fprintf(stderr, sched_setaffinity()失败\ n );

  }

  }

  void worker _ process _ cycle(void * data){

  int worker=(intptr_t)数据;

  //工作进程初始化

  worker_process_init(工人);

  //工作

  for(;){

  睡眠(10);

  printf(pid %ld,正在进行.\n ,(long int)getpid());

  }

  }执行:

  补充:

  查看cpu内核上进程的命令。ps -eLo ruser、pid、lwp、psr、args

  设置CPU亲和度后,可以发现每个子进程对应一个核心。如果不设置,进程和核心之间会有切换,进程会从一个核心切换到另一个核心进行复制拷贝,从而浪费CPU性能,降低执行效率。Typedef函数指针相关文章——关于函数指针和typedef的组合

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windows下怎么安装perl,linux安装perl环境
  • windows下怎么安装perl,linux安装perl环境,Windows10下安装配置 perl 环境的详细教程
  • vue安装vuex,linux vue部署
  • vue 配置,vue linux
  • vue 配置,vue linux,Vue中的Vux配置指南
  • ubuntu unzip命令,Unzip命令,Linux命令unzip详解
  • rar文件怎么解压Linux,Linux rar文件怎么解压
  • rar文件怎么解压Linux,Linux rar文件怎么解压,Linux 下解压 rar 文件的方法
  • os.popen函数,popen用法,Linux中popen函数的作用小结
  • mkdir命令用法,命令行mkdir,Linux学习之mkdir命令详解
  • linux重启命令行,linux自动重启命令
  • linux重启命令行,linux自动重启命令,详解Linux 中五个重启命令
  • linux里chown命令,linux权限chown
  • linux里chown命令,linux中chown是什么意思,每天一个linux命令(30)- chown命令详解
  • linux里awk命令,linux常用命令awk
  • 留言与评论(共有 条评论)
       
    验证码: