[FUG-BR] FreeBSD desaparecendo com um núcleo na CPU

Paulo Olivier Cavalcanti procavalcanti em gmail.com
Sexta Novembro 9 10:59:56 BRST 2012


Em 09/11/2012 10:41, Otacílio escreveu:
> [...]
>
> Se o problema é stressar alguém está falando com quem entende.
>
> Este é um programinha que fiz para encontrar números primos mas cujo
> verdadeiro motivo de existir é exemplificar a programação com múltiplos
> processos. Você informa uma faixa de valores e ele encontra os números
> primos naquela faixa utilizando o número de processos que você informar.
> Você pode usar isso para stressar as suas CPUs.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/types.h>
> #include <sys/wait.h>
> #include <unistd.h>
> #include "primo.h"
>
> int main(int argc, char **argv){
> 	u_int32_t	limite_superior;
> 	u_int32_t	i, j;
> 	u_int32_t	processos;
> 	u_int32_t	intervalo;
> 	u_int32_t	passo;
> 	int status;
>
> 	if(argc != 3){
> 		fprintf(stderr,"Este programa encontra todos os numero primos em um
> intervalo.\nVoce deve usar %s limite_superior numero_processos\n", argv[0]);
> 		exit(1);
> 	}
> 	
> 	processos = (u_int32_t)strtol(argv[2], (char **)NULL, 10);
> 	limite_superior = (u_int32_t)strtol(argv[1], (char **)NULL, 10);
> 	
> 	intervalo = limite_superior/processos;
> 	
> 	passo = 2 * processos;
> 	
> 	if(limite_superior >= 1){
> 		fprintf(stdout,"%d eh primo\n", 1);
> 		fflush(stdout);
> 	}
> 	if(limite_superior >= 2){
> 		fprintf(stdout,"%d eh primo\n", 2);
> 		fflush(stdout);
> 	}
> 	
> 	//Vamos criar os processos reponsáveis por encontrar os números
> 	for(i=0; i<processos; i++){
> 		//Vamos fazer o fork do processo
> 		if(!fork()){
> 			//Processo filho entra aqui				
> 			for(j=3+2*i; j<=limite_superior; j+=passo){
> 				if(eh_primo(j)){
> 					fprintf(stdout,"%d eh primo\n", j);
> 				}
> 			}
> 			exit(0);
> 		}
> 	}
> 	
> 	for(i = 1; i<=processos; i++){
> 		wait(&status);
> 	}
> 	return 0;
> }
>
>

paulo em amd> gcc46 numeroprimo.c                                         
numeroprimo.c:6:19: fatal error: primo.h: No such file or directory
compilation terminated

paulo em amd> g++46 numeroprimo.c                                         
numeroprimo.c:6:19: fatal error: primo.h: No such file or directory
compilation terminated.







-- 
http://about.me/paulocavalcanti



Mais detalhes sobre a lista de discussão freebsd