Misael Postado Junho 28, 2011 Denunciar Share Postado Junho 28, 2011 Boa noite,preciso urgentemente de ajuda!!Tenho 3 exercicios de threds... em c++, so que rodam apenas em linux.Preciso mudar para que funcionem no windows... mas não sei como faço.Segue outro deles:2 - Criar um aplicação que permita a 2 threads lerem 2 arquivos texto simultameamente e os apresentarem em tela.Para efetuar esse trabalho considere os seguintes casos de teste:- caso 1: Thread1 é mais rápida que Thread2- caso 2: Arquivo lido pela Thread 2 é mais extenso, com ambas as threds tendo as mesmas velocidades de acesso aos seus respectivos recursos.Código: #define _GNU_SOURCE // necessário porque getline() é extensão GNU#include <pthread.h>#include <stdio.h>#include <stdlib.h>void *thread1(){printf("sou a thread 1 \n");FILE *f= fopen("ARQ1.txt", "r");size_t len= 10; // valor arbitráriochar *linha= malloc(len);if (!f){perror("ARQ1.txt");exit(1);} while (getline(&linha, &len, f) > 0){printf("%s", linha);}if (linha)free(linha);fclose(f);return 0;}void *thread2(){printf("sou a thread 2 \n");//sleep(2);FILE *f= fopen("ARQ2.txt", "r");size_t len= 100; // valor arbitráriochar *linha= malloc(len);if (!f){perror("ARQ2.txt");exit(1);} while (getline(&linha, &len, f) > 0){printf("%s", linha);}if (linha)free(linha);fclose(f);return 0;}main(int argc, char *argv[]){ pthread_t tid[2];pthread_create(&tid[0],NULL,thread1,NULL);pthread_join(tid[0], NULL);pthread_create(&tid[1],NULL,thread2,NULL);pthread_join(tid[1], NULL);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Misael
Boa noite,
preciso urgentemente de ajuda!!
Tenho 3 exercicios de threds... em c++, so que rodam apenas em linux.
Preciso mudar para que funcionem no windows... mas não sei como faço.
Segue outro deles:
2 - Criar um aplicação que permita a 2 threads lerem 2 arquivos texto simultameamente e os apresentarem em tela.
Para efetuar esse trabalho considere os seguintes casos de teste:
- caso 1: Thread1 é mais rápida que Thread2
- caso 2: Arquivo lido pela Thread 2 é mais extenso, com ambas as threds tendo as mesmas velocidades de acesso aos seus respectivos recursos.
Código:
#define _GNU_SOURCE // necessário porque getline() é extensão GNU
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *thread1(){
printf("sou a thread 1 \n");
FILE *f= fopen("ARQ1.txt", "r");
size_t len= 10; // valor arbitrário
char *linha= malloc(len);
if (!f)
{
perror("ARQ1.txt");
exit(1);
}
while (getline(&linha, &len, f) > 0)
{
printf("%s", linha);
}
if (linha)
free(linha);
fclose(f);
return 0;
}
void *thread2(){
printf("sou a thread 2 \n");
//sleep(2);
FILE *f= fopen("ARQ2.txt", "r");
size_t len= 100; // valor arbitrário
char *linha= malloc(len);
if (!f)
{
perror("ARQ2.txt");
exit(1);
}
while (getline(&linha, &len, f) > 0)
{
printf("%s", linha);
}
if (linha)
free(linha);
fclose(f);
return 0;
}
main(int argc, char *argv[]){
pthread_t tid[2];
pthread_create(&tid[0],NULL,thread1,NULL);
pthread_join(tid[0], NULL);
pthread_create(&tid[1],NULL,thread2,NULL);
pthread_join(tid[1], NULL);
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.