C/Visual C - THREADS EN C INDEPENDIENTES DE PLATAFORMA

 
Vista:

THREADS EN C INDEPENDIENTES DE PLATAFORMA

Publicado por Fantasma (8 intervenciones) el 09/08/2002 16:53:42
Hola buen dia, alguien me podria ayudar acerca de los threads en C, bueno, lo que pasa es que tengo ya unos implementados en mi aplicacion pero son con la ayuda de la libreria process.h, y los creo que de esta manera
void ejecuta(void *dummy);
_beginthread(ejecuta, 0, NULL);

Bueno ojala y alguien me pueda ayudar y me me pueda explicar o dar un ejmplo de la implementacion de hilos indespendientes de plataforma, muchas gracias, saludos...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de hilos independientes de plataforma en C

Publicado por Alejandro (913 intervenciones) el 12/03/2025 23:33:13
Para implementar hilos en C de manera independiente de la plataforma, es recomendable utilizar la biblioteca POSIX Threads (pthreads), que es ampliamente soportada en sistemas Unix y también puede ser utilizada en Windows a través de bibliotecas compatibles. A continuación, te muestro cómo puedes hacerlo.

Ejemplo de código con pthreads



Aquí tienes un ejemplo básico de cómo crear hilos utilizando la biblioteca pthreads:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
 
// Función que será ejecutada por el hilo
void* ejecuta(void* arg) {
    int id = *((int*)arg);
    printf("Hilo %d en ejecución.\n", id);
    sleep(1); // Simula trabajo
   printf("Hilo %d finalizado.\n", id);
    return NULL;
}
 
int main() {
    pthread_t hilos[5];
    int ids[5];
 
    // Crear hilos
    for (int i = 0; i < 5; i++) {
        ids[i] = i + 1; // Asignar un ID al hilo
        if (pthread_create(&hilos[i], NULL, ejecuta, (void*)&ids[i]) != 0) {
            perror("Error al crear el hilo");
            return 1;
        }
    }
 
    // Esperar a que los hilos terminen
    for (int i = 0; i < 5; i++) {
        pthread_join(hilos[i], NULL);
    }
 
    printf("Todos los hilos han finalizado.\n");
    return 0;
}

Explicación del código



1. Inclusión de bibliotecas: Se incluyen las bibliotecas necesarias para trabajar con hilos (`pthread.h`) y para funciones estándar (`stdio.h`, `stdlib.h`, `unistd.h`).

2. Función del hilo: La función `ejecuta` es la que se ejecutará en cada hilo. Recibe un puntero que puede ser utilizado para pasar información al hilo (en este caso, el ID del hilo).

3. Creación de hilos: En el `main`, se crea un arreglo de hilos y se inicia cada hilo con `pthread_create`. Se pasa el ID del hilo como argumento.

4. Esperar a que terminen: Se utiliza `pthread_join` para esperar a que cada hilo termine su ejecución antes de continuar.

Compilación



Para compilar el código, asegúrate de enlazar la biblioteca pthread. Si estás en un sistema Unix, puedes usar el siguiente comando:

1
gcc -o mi_programa mi_programa.c -lpthread

Notas



- Si estás en Windows y deseas usar pthreads, puedes utilizar una implementación como pthreads-w32 [url](https://sourceware.org/pthreads-win32/[/url]).
- Asegúrate de manejar adecuadamente la sincronización si tus hilos comparten recursos.

¡Saludos, Fantasma!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar