[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