Programación multihilos



  • Tengo una duda respecto a la programación multihilos en Qt, yo tengo una lista en el hilo principal la cual en el hilo secundario voy a estar utilizando para imprimir su informacion constantemente, en caso de yo modificar la lista en el hilo principal, se actualizaría en el hilo secundario esta lista...?



  • Digamos que tu lista esta implementada con la clase QList. Si tu haces un cambio en esa lista (digamos, añadiendo algo al principió de la lista) desde tu hilo secundario, entonces el cambio lo vería tu hilo principal.

    Un riesgo de hacer modificaciones desde mas de un hilo es que aveces puedes tratar de leer datos de un hilo mientras los cambias de otro.

    Para solucionar este problema, debes usar un candado (un mutex). Ve la documentación de la clase QMutex para darte idea.



  • Digamos que tu lista esta implementada con la clase QList. Si tu haces un cambio en esa lista (digamos, añadiendo algo al principió de la lista) desde tu hilo secundario, entonces el cambio lo vería tu hilo principal.

    Un riesgo de hacer modificaciones desde mas de un hilo es que aveces puedes tratar de leer datos de un hilo mientras los cambias de otro.

    Para solucionar este problema, debes usar un candado (un mutex). Ve la documentación de la clase QMutex para darte idea.



  • Si el segundo hilo utiliza un puntero a la lista si que podrás ver los cambios pero si utiliza una copia no los veras.
    Para que dos hilos compartan variables te recomiendo que los dos hilos tengan un puntero a la variable compartida y como te indica "drhugo" utilizes un mutex para proteger el acceso concurrente a la variable.



  • Si el segundo hilo utiliza un puntero a la lista si que podrás ver los cambios pero si utiliza una copia no los veras.
    Para que dos hilos compartan variables te recomiendo que los dos hilos tengan un puntero a la variable compartida y como te indica "drhugo" utilizes un mutex para proteger el acceso concurrente a la variable.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.