[Anotación de Poco] Hilo hilo

El hilo de Poco encapsula la biblioteca estándar std::thread, que proporciona una interfaz ejecutable similar a Java. Por eso se usa contra Java.

A diferencia de la biblioteca estándar, Poco::Thread se crea por separado del tiempo de ejecución. Este diseño de biblioteca estándar realmente no es fácil de usar. Por ejemplo el siguiente ejemplo.

Mira también ejemplos.

Como se puede ver en lo anterior, el uso es básicamente el mismo que el de Java. La creación y la operación también están separadas.

Mire la interfaz de ejecución principal, extraída del código fuente de Poco1.9.

El archivo fuente incluye principalmente

1. Thread.h/cpp

Proporciona una interfaz de llamada externa

definida en Thread. cpp Hay dos tipos de titulares, titulares ejecutables y CallableHolder. La tecnología de soporte se utiliza a menudo en el marco de Poco, que es un contenedor de puntero para un determinado tipo de objeto.

Runnable es la clase base de las clases de ejecución de subprocesos.

Callable es un método con un solo parámetro.

2.Hilo_POSIX.h/thread_POSIX.cpp

3.Hilo_VX.cpp

4. .cpp

5. Thread_ wince . h/thread_WINCE.cpp

La implementación de subprocesos se define en cada archivo para diferentes implementaciones específicas según la plataforma. Threading hereda de forma privada Threading IMP, y el archivo para el que se utiliza Threading IMP depende de la macro de compilación.

Por cierto, implementación bajo sistema POSIX. Como estábamos usando C++98, no había ninguna clase de subproceso en ese momento, por lo que todas las implementaciones se implementaron utilizando la biblioteca pthread. Consulte la documentación técnica de pthread para conocer el uso específico.

6.ThreadLocal.h/ThreadLocal.cpp

ThreadLocal define tres clases, TLSAbstractSlot, TLSSlot y ThreadLocalStorage.

TLSAbstractSlot es una clase base y TLSSlot es una clase de plantilla que empaqueta tipos específicos a través de tecnología de plantilla. ThreadLocalStorage se utiliza para el almacenamiento de subprocesos, específicamente mediante mapeo.

Debido a que 1.9 usa c++98 y no hace referencia a la palabra clave local_thread, así es como se implementa.

ThreadLocalStorage se define de la siguiente manera

Entonces, ¿cómo se define tls para Poco::Thread?

Hay relativamente pocos archivos fuente, principalmente los siguientes

1. Thread.h/cpp

2. POSIX.CPP/Thread _ VX . CPP/Thread _ win32

Thread.h empaqueta principalmente la clase de implementación ThreadImp y define la interfaz externa.

Thread_STD.h define la implementación interna y proporciona principalmente la clase ThreadImp.

Subproceso_POSIX. Hilo VX. CPP/Thread_Win32. CPP define implementaciones compatibles en diferentes plataformas.

Thread_STD.h define varios tipos importantes

Se agregan dos tipos a Thread.cpp.

ThreadData modificado por privado define los datos internos del hilo. El código fuente en 1.9 se define en cada clase de implementación de plataforma y se define en Thread.cpp. En comparación con la definición anterior, la adición aquí es la adición del puntero std::thread. Debido a que se hace referencia directa a los subprocesos en C++ 11, algunas implementaciones dependen directamente de ellos.