zoukankan      html  css  js  c++  java
  • linux高编进程------进程分配

    筛质数进阶

    之前筛质数程序创建了201个子进程,由于进程号有限,所以可以采用以下三种方法

    1、分块法:将201个子进程分成N等份。eg:N=3,那么201个子进程平均分成3份

    2.交叉分配法:将201个子进程依次分配给N个进程

    3.进程池:用一个进程取质数,并将其丢给下边的线程或者进程处理质数

    =====================================================================

    交叉分配法:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    
    #define LEFT    30000000
    #define RIGHT   30000200
    #define N       3
    
    int main(void)
    {
        int i , j , mark , n;
        pid_t pid ;
    
        for(n = 0 ; n < N ; n++)
        {
            //1.父进程创建3个子进程
            pid = fork();
            //2.失败判断(并不完善)
            if(pid < 0)
            {
                perror("fork()");//需要将之前fork的释放
                exit(1);
            }
            //3.子进程
            if(pid == 0)
            {
                for(i = LEFT+n ; i <= RIGHT ; i+=N)
                {
                    mark = 1 ;
                    for(j = 2 ;j < i/2 ; j++)
                    {
                        if(i % j == 0)
                        {
                            mark = 0 ;
                            break;
                        }
                    }
                    if(mark)
                        printf("[%d]%d is a primer
    ",n,i);
                }
                exit(0);
            }
        }
        //4.收尸
        for(n = 0 ; n < N ; n++)
            wait(NULL);
        exit(0);
    }

    结果:

    [1]30000001 is a primer
    [2]30000023 is a primer
    [1]30000037 is a primer
    [2]30000041 is a primer
    [2]30000059 is a primer
    [1]30000049 is a primer
    [1]30000079 is a primer
    [2]30000071 is a primer
    [1]30000109 is a primer
    [2]30000083 is a primer
    [1]30000133 is a primer
    [2]30000137 is a primer
    [1]30000163 is a primer
    [2]30000149 is a primer
    [1]30000169 is a primer
    [2]30000167 is a primer
    [1]30000193 is a primer
    [1]30000199 is a primer

    ============================================================================

  • 相关阅读:
    netstat
    Android总结篇——Intent机制详解及示例总结
    Android系统介绍与框架
    三个绘图工具类详解
    Android 调用 WebService
    Android JSON数据解析
    Android 总结:ContentProvider 的使用
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Service完全解析,关于服务你所需知道的一切(上)
    Activity的四种加载模式详解:
  • 原文地址:https://www.cnblogs.com/muzihuan/p/5286423.html
Copyright © 2011-2022 走看看