Bajo su propio uso multihilo Linux

(3),的多线程简单示例
一个简单的Linux多线程示例如下:
# include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void * thread_function ( void * arg);
mensaje char [] = "Hello World";
int main ()
{
res int;
pthread_t a_thread;
thread_result void *;
res = pthread_create (y a_thread, NULL, thread_function, (void *) mensaje);
si (res = 0)
{
perror ( "La creación de hilos no!");
salida (EXIT_FAILURE);
}
Printf ( "Esperando hilo hasta el final ... / n");
res = pthread_join (a_thread, y thread_result);
si (res! = 0)
{
perror ("
salida (EXIT_FAILURE);
}
Printf ( "El hilo se incorporó, volvió% s / n", (char *) thread_result);
printf ( "mensaje es ahora% s / n", mensaje);
salida (EXIT_FAILURE);
}
Void * thread_function (void * arg)
{
printf ( "thread_function se está ejecutando argumento fue% s / n.", (Char *) arg);
sueño (3);
strcpy (mensaje, "Adiós!");
pthread_exit ( "Gracias por su tiempo de CPU!");
}
编译语句如下:
gcc -o -lpthread thread1.c Thread1
输出结果是:
. $ / Thread1 [输出]:
thread_function se está ejecutando. Argumento era Hello World
espera para el hilo hasta el final ...
Tema unió, volvió Gracias por su tiempo de CPU!
Mensaje es ahora Bye!
En este ejemplo, pthread_exit (void * retval) en sí se refiere a un objeto que se devuelve por medio de
una aguja, y por lo tanto, pthread_join (pthread_t XX, void ** thread_return); thread_return en
una de dos punteros para el valor de retorno indicador de paso . Podemos ver, creamos un nuevo hilo para modificar una serie de
mensaje de valores, mientras que el hilo original también se puede acceder a la matriz. Si llamamos a un tenedor en lugar de
pthread_create, no habría ningún tipo de efectos. Debido a que después de un tenedor para crear un proceso hijo, el proceso hijo copiará
el proceso padre, los dos separados, interferir entre sí, pero entre los hilos están relacionados con proceso de compartir recursos.
<4>, ejemplos multiproceso
(1), crear un nuevo archivo de 1.Multithreading.c:
/*1.Multithreading.c: c múltiple Programación del hilo en Linux * /
"pthread.h" # include
# include <stdio.h>
#include <SYS / time.h>
#include <string.h>
#include <time.h>
#define MAX 10
pthread_t Tema [2];
pthread_mutex_t MUT;
int Número = 0, I;
void * Thread1 ()
{
printf ( "Thread1: Soy hilo 1 \ n");
del sistema ( "ls -l");
pthread_exit (NULL);
}
Void * thread2 ()
{
int j;
printf ( "Thread1: Soy rosca 2 \ n");
para (j = 0; j <5; j ++)
{
 sueño (1);
printf ( "% dS \ n", j + 1);
}
Pthread_exit (NULL);
}
Void thread_create (void)
{
temp int;
memset (y hilo, 0, sizeof (rosca)); // comment1
/ *创建线程* /
if ((temp = pthread_create (y la rosca [0], NULL, Thread1, NULL)) = 0!)
// comment2
printf ( "线程1创建失败\ n");
más
printf ( "线程1被创建\ n");
if ((temp = pthread_create (y la rosca [1],
comment3 //
printf ( "2 La creación de hilos no \ n");
else
printf ( "hilo se crea 2 \ n");
}
vacío thread_wait (void)
{
/ * espera para el extremo del hilo * /
IF (Tema [0] =! 0)
{// comment4
pthread_join (rosca [0], NULL);
el printf ( "hilo 1 ha terminado \ n-");
}
IF (hilo [1] == 0)
{
// pthread_join (rosca [1], NULL );
printf ( "hilo 2 ha terminado \ n");
}
}
int main ()
{
/ * atributos uso por defecto inicializar el mutex * /
el pthread_mutex_init (y MUT, NULL);
printf ( "I es la función principal \ n") ;
thread_create ();
printf ( "soy la función principal, el hilo está esperando para completar la tarea \ n- el");
thread_wait ();
return 0;
}
(2), de ejecución de compilación:
sudo gcc -o 1.Multithreading.c 1.Multithreading -lpthread
./ 1.Multithreading

Publicado 24 artículos originales · ganado elogios 21 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/cczx139/article/details/90741226
Recomendado
Clasificación