[C con Clase] Threads en C

Alnavegante alnavegante en gmail.com
Jue Jun 26 11:29:25 CEST 2008


En primer lugar, un saludo a todos. Esta es mi primera consulta a la lista,
aunque la leo a diario.

Mi cuestión es la siguiente: estoy trabajando con matrices la cuales recorro
de la siguiente forma:

    for( j=1; j<dimy-1; j++ )
        {
        for( i=1; i<dimx-1; i++ )
            {
             u[j][i]=f(u[j+1][i],u[j-1][i]) //no es mas que un ejemplo
            }
        }

y se me ha ocurrido que para acelerar el calculo, en lugar de hacer lo
anterio, creo dos hilos -bajo Win32-, de forma que recorran la matriz asi:

    for( j=1; j<dimy/2; j++ )
        {
        for( i=1; i<dimx-1; i++ )
            {
             u[j][i]=f(u[j+1][i],u[j-1][i]) //no es mas que un ejemplo
            }
        }

    for( j=dimy/2; j<dimy-1; j++ )
        {
        for( i=1; i<dimx-1; i++ )
            {
             u[j][i]=f(u[j+1][i],u[j-1][i]) //no es mas que un ejemplo
            }
        }

es decir, un hilo recorre la primera mitad de la matriz y el otro la segunda
mitad. El caso es que este procedimiento no es más rápido, sino todo lo
contrario... tardo entre el doble y el triple en hacerlo. ¿Alguien puede
explilcarme por qué?  ¿no debería ser más rápido efectuar dos procesos en
paralelo -ejecuto en un Quad Core- en lugar de uno sólo?


Por adelantado, muchas gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080626/deb9ff50/attachment.html>


Más información sobre la lista de distribución Cconclase