yo soy novato de programación para Mac y estoy realmente sorprendido de Grand Central Dispatch. Leí sobre eso y parece ser la solución perfecta para programación paralela. Trabajé con hilos POSIX y quiero moverme a GCD.Fácil ejemplo de Grand Central Dispatch
vi los códigos de muestras en el Centro de desarrollo de Apple, pero me confundió tanto. Busqué un ejemplo fácil con dos hilos para comenzar, pero no puedo encontrarlo.
¿Cómo puedo hacer que este código de ejemplo usando GCD ???
#include <stdio.h> /* standard I/O routines */
#include <pthread.h> /* pthread functions and data structures */
/* function to be executed by the new thread */
void* do_loop(void* data)
{
int i; /* counter, to print numbers */
int j; /* counter, for delay */
int me = *((int*)data); /* thread identifying number */
for (i=0; i<10; i++)
{
for (j=0; j<500000; j++) /* delay loop */
;
printf("'%d' - Got '%d'\n", me, i);
}
/* terminate the thread */
pthread_exit(NULL);
}
void* th2(void* data)
{
cout << "Thread nº 2" << endl;
}
int main(int argc, char* argv[])
{
int thr_id; /* thread ID for the newly created thread */
pthread_t p_thread1;
pthread_t p_thread2; /* thread's structure */
int a = 1; /* thread 1 identifying number */
int b = 2; /* thread 2 identifying number */
/* create a new thread that will execute 'do_loop()' */
thr_id = pthread_create(&p_thread1, NULL, do_loop, (void*)&a);
/* run 'do_loop()' in the main thread as well */
thr_id = pthread_create(&p_thread2, NULL, th2, (void*)&b);
return 0;
}
Gracias de antemano
Sí, Jonathan tiene usted razón. Me olvido de poner mi ejemplo de la instrucción 'pthread_join' en el programa principal para esperar hasta que los hilos terminen para finalizar el programa principal. Las instrucciones son equivalentes a 'pthread_join' para GCD. Muchas gracias por sus respuestas. Eso fue muy útil para mí. –