[Anotación de Poco] Hilo hilo
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.