hola buenas tardes, tengo una duda, resulta que encontré un ejemplo por inernet sobre hilos y estoy estudiandolo y bien, pero al correrlo no hace lo que "denbería" hacer y ya he mirado el código demasiado como para pensar que el ejemplo está mal.
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) ) {
printf("Error creando el hilo."); }
if (pthread_create( &mithread002, NULL, thread_function02, NULL) ) {
printf("Error creando el hilo."); }
if (pthread_create( &mithread003, NULL, thread_function03, NULL) ) {
printf("Error creando el hilo."); }
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