[FUG-BR] FreeBSD desaparecendo com um núcleo na CPU
Marcelo Gondim
gondim em bsdinfo.com.br
Sexta Novembro 9 11:13:16 BRST 2012
Em 09/11/12 10:59, Paulo Olivier Cavalcanti escreveu:
> 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.
>
>
>
>
>
>
>
Opa faltou ele mandar o primo.h :) que não faz parte do C :)
Otacílio manda o código desse header. :)
Mais detalhes sobre a lista de discussão freebsd