Cita: yo vengo de programar microntroladores por eso es que de c++ solo conozco lo mas básico y tenia alguna experiencia en visual basic pero para este ultimo no hay que conocer mucho de POO para usarlo .y tengo un concepto de las interrupciones o eventos que no se si aplican tambien al c++ de pc. y es que si en medio del código que atiende una interrupción se presenta otro evento del mismo tipo este debe quedar en cola y sera atendido cuando se finalice la rutina de servicio.
C++ no incluye ninguna rutina de multihilo, por lo que no hay ningun sistema de interrupciones/eventos detrás. La programación multihilo es controlada por librerías externas (en este caso pthread). Normalmente escrita por el propio sistema operativo (no puedes usar pthread en Windows por ejemplo).
Cita: esto lo pregunto por que los pthreads que creo se ejecutan de manera "paralela" por lo que me surge la pregunta de que ocurre si dos o mas pthread acceden la caja de texto y quieren escribi "Aqui estoy"
Para evitar esto, pthread dispone de una herramienta: mutex (semáforo). La idea es mirar el semáforo antes de acceder a cualquier dato compartido, si está en rojo se esperará. Si está en verde pasará y lo pondrá en rojo (es tu responsabilidad desbloquear el semáforo cuando termines la operación).
Puede que ya sepas algo sobre tema, pero te pongo un ejemplo por si las moscas:
Código C++:
Ver originalpthread_mutex_t mutex; // identificador mutex (variable global)
void* Hilo(void* param)
{
// Inicio del hilo
pthread_mutex_init(&mutex, NULL); // creando mutex (por defecto esta desbloqueado)
variable = variable*2+3; // operaciones ajenas
//...
// quiero acceder a un recurso compartido.
pthread_mutex_lock(&mutex); // comprueba el mutex, si esta libre lo bloqueará, si no esperará a que se ponga en verde
acceder_recurso_compartido();
pthread_mutex_unlock(&mutex); // desbloqueamos el mutex
}
En lugar de variable global puedes pasar su dirrecion como paramétro (mismo metodo que con la clase).