Publicidad

Hola, tengo que responder esto pero no se como

Publicado por Starchaser, 16 Noviembre de 2020, 16:42

Tema anterior - Siguiente tema

0 Usuarios y 1 Visitante están viendo este tema.

Starchaser

1.   Dado el siguiente código:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
unsigned int cnt = 0;
void ∗count ( void ∗arg ) {             /*cuerpo de cada hebra*/
    int i ;
    for ( i = 0; i < 1000; i ++)
          cnt ++;
   return NULL ;
}

int main ( void ) {
   pthread_t  tids[4] ;
   int i ;
   for ( i = 0; i < 4; i ++)
            pthread_create (&tids , NULL, count , NULL ) ;
   for ( i = 0; i < 4; i ++)
         pthread _join ( tids[ i ] , NULL ) ;
printf( " cnt = %u \n " , cnt ) ;
return 0;
}
a)   Indique cuál debería ser el resultado de la variable cnt (justifica tu respuesta).
b)   Ejecuta el código varias veces y compara los resultados  obtenidos con tu respuesta en a).

Usamos rextester en lenguaje C(gcc)
al poner el código me manda muchos errores y no entiendo porqué.

Rock Lee

Tiene un principio y fin no estoy entendiendo del todo, ¿que errores te marca? por que me parece deberia funcionar correctamente...


Saludos Familia!

Starchaser

#2
Cita de: Rock Lee en 16 Noviembre de 2020, 20:21
Tiene un principio y fin no estoy entendiendo del todo, ¿que errores te marca? por que me parece deberia funcionar correctamente...


Saludos Familia!

salen muchos errores, mira
https://rextester.com/KDU48206

Tema unido automáticamente » 16 Noviembre de 2020, 23:56

puedes ejecutarlo para saber si te funciona?
la profesora lo paso en word y al parecer se cambiaron algunos símbolos

Rock Lee

... desde el vamos si lo pasa por word algo esta mal, sobre todo algunos signos son muy toca pelotas al momento de querer correrlos. Y mirando la imagen veo varios problemas no lee correctamente la setencia dada o no toma el valor null, alguno de tus compañeros tuvo el mismo problema?


Saludos Familia!

Starchaser

Si, ahora lo estamos viendo y los errores son exactamente los que tu dices, la profesora ya nos contó y arreglo el problema.
Muchas gracias.

Rock Lee

Genial, cuando lo tengas si puedes vuelve a comentarlo para si otro se topa con el mismo problema :)!


Saludos Familia!

Príncipe_Azul

#6
Hola, solo comentar y recomendar que en los bucles for se deben usar llaves de apertura y cierre, ejemplo:

    for ( i = 0; i < 1000; i++)
    {
          cnt++;
    }


Aunque en C es importante la indentación, pero más importante son las llaves, ya que son las que realmente definen el inicio y fin de instrucciones dentro de las llaves.

Si el compilador no te dio errores por no usarlas, es muy probable porque tan solo tenía una sola instrucción, de todas maneras siempre hay que acostumbrarse a utilizarlas.

Otro punto a tener en cuenta, ésto no debe tener espacios:

i ++;
cnt ++;

Debería ser:

i++;
cnt++;


Saludos

Temas Similares (5)