Red de conocimiento informático - Problemas con los teléfonos móviles - Introducción a la programación rocm

Introducción a la programación rocm

A continuación se muestra un diseño de curso que hice este semestre.

Puedes consultarlo, debería ser casi lo mismo.

Primero, cómo crear un hilo

Archivo de encabezado usado

pthread.h

Semaphore

stdio .h

Cadena

Definir identificador de hilo

pthread_t

Crear hilo

pthread_create

Corresponde al segmento de programa que es función del hilo.

Problemas de atención

Asegúrese de que el proceso no finalice (agregue un bucle infinito después de crear el hilo)

Agregue una declaración While(1) al hilo , que es un bucle infinito, asegurando que el proceso nunca terminará.

2. Función de control de la concurrencia de subprocesos

Sem_t: tipo de señal.

Sem_init: señal de inicialización

Sem_wait: equivalente a la operación p.

Sem_post: equivalente a la operación v.

En tercer lugar, implementar el sistema prototipo

Temas de padre, madre, hijo e hija:

Hay un plato en la mesa y solo una lata de fruta. colocarse a la vez. El padre pone manzanas, la madre pone naranjas, el hijo espera las naranjas en el plato y la hija espera las manzanas en el plato. Implementado a través de operaciones P, V y procesos de tubo respectivamente.

Uno por hilo.

pthread_t padre; proceso padre

pthread_t madre; proceso madre

pthread_t hijo proceso hijo

pthread_t hijo proceso

>

La placa se puede representar mediante una variable.

sem_t está vacío;

Cada hilo no lo hace solo una vez, se puede hacer infinitas o veces limitadas.

Utilice While(1) para controlar que cada hilo se repita infinitamente.

Información de salida sobre cada ejecución del hilo.

printf("s\n ", (char *)arg); genera la información de ejecución del hilo correspondiente a través del parámetro arg.

Método de compilación

gcc hex.c -lpthread

Generar el archivo ejecutable predeterminado a.out

Intro. Comando /a.out para ejecutar.

Ver los resultados: La ejecución continua del programa muestra que

El padre puso una manzana.

La hija recibió una manzana.

Mamá puso una naranja.

Mi hijo compró una naranja.

Mamá puso una naranja.

Mi hijo compró una naranja.

………………..

4. Código fuente del programa

# include ltstdio.h gt

# include ltstring .h gt

# include ltsemaphore.h gt

# include ltpthread.h gt

sem_t vacío //Definir semáforo

sem _ t applefull

sem _ t orangefull

void * procf(void * arg)//hilo principal

{

while (1){

SEM _ wait(amp; vacío); //P operación

printf("s\n ", (char *)arg);

SEM_post(amp;apple full);//Operación V

Sleep(7);

}

}

void * procm(void * arg)//Hilo madre

{

while(1){

SEM _ wait(amp; vacío) ;

printf("s\n ", (char *)arg);

SEM_post(amp;naranja lleno);

dormir(3);

}

}

void * procs(void * arg)//hilo secundario

{

while(1 ){

SEM_wait(amp;naranja completo);

printf("s\n ", (char *)arg);

SEM_post(amp; vacío);

sleep(2);

}

}

void * procd (void * arg)//Subproceso demonio

{

mientras(1){

SEM_wait(y manzana llena);

printf("s\n ", (char *)arg);

SEM_post(amp;empty);

dormir(5);

}

}

main()

{

pthread_t padre; //Definir un hilo

pthread_t madre;

pthread_t hijo

pthread_t hija;

SEM_init(amp; vacío, 0, 1); // Inicialización del semáforo

SEM_init(amp;applefull,0,0) ;

SEM_init(amp;orangefull,0,0);

pthread_ create(amp; padre, NULL, procf, "El padre entra en una manzana. "); //Crear un hilo

pthread_create(amp; mother, NULL, procm, "Mamá entra en una naranja.");

pthread_create(amp; hija, NULL, procd , "La hija recibió una manzana.

");

pthread_create(amp; son, NULL, procs, "El hijo recibe una naranja.");

While(1){} //Bucle en espera

}