Verán el código, corre y según el ejemplo imprime esto :
xxxxx.....ooooo+++++
Pero a mi me imprime:
xxxxx+++++ooooo.....
x que se imprime en x es lo primero que pone, pero luego me coloca al revez el resto de impresiones
este es el código
Código C++:
Ver original
#include <pthread.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> pthread_mutex_t ptmutex1; // imprime . void *thread_function01(void *arg) { pthread_mutex_lock(&ptmutex1); for (int i=0; i<5; i++) { sleep(1); } pthread_mutex_unlock(&ptmutex1); return NULL; } // imprime 0 void *thread_function02(void *arg) { pthread_mutex_lock(&ptmutex1); for (int i=0; i<5; i++) { sleep(1); } pthread_mutex_unlock(&ptmutex1); return NULL; } // imprime + void *thread_function03(void *arg) { pthread_mutex_lock(&ptmutex1); for (int i=0; i<5; i++) { sleep(1); } pthread_mutex_unlock(&ptmutex1); return NULL; } // imprime x int main(void) { pthread_t mithread001, mithread002, mithread003; if (pthread_create( &mithread001, NULL, thread_function01, NULL) ) { } if (pthread_create( &mithread002, NULL, thread_function02, NULL) ) { } if (pthread_create( &mithread003, NULL, thread_function03, NULL) ) { } pthread_mutex_lock(&ptmutex1); for (int i=0; i<5; i++) { sleep(1); } pthread_mutex_unlock(&ptmutex1); if (pthread_join(mithread001, NULL)) { } if (pthread_join(mithread002, NULL)) { } if (pthread_join(mithread003, NULL)) { } }
Y en caso que esté bien la logica del código, mi pregunta es: cómo hago para imprimir en el orden que yo quiera es decir:
.....+++++xxxxxooooo
??
Es una pregunta de principiante en hilos en c++
gracias por el tiempo y la colaboración!
ciao