Java multiproceso
El soporte de Java para subprocesos múltiples es muy poderoso. Protege muchos detalles técnicos, lo que nos permite desarrollar fácilmente aplicaciones de subprocesos múltiples.
Hay dos métodos para implementar subprocesos múltiples en Java
Heredar la clase Thread classMyThreadextendsThread{publicvoidrun(){//Escribir aquí el contenido del hilo}publicstaticvoidmain(String[] args){ //Utilice este método para iniciar un hilo (newMyThread()).start();}} Implemente la interfaz Runnable classMyThreadimplementsRunnable{publicvoidrun(){// Escriba aquí el contenido del hilo}publicstaticvoidmain(String[]args ){//Usa esto El método inicia un hilo (newThread(newMyThread())).start();}} Generalmente se recomienda utilizar el segundo método, porque Java solo permite una herencia única, pero permite la implementación de múltiples interfaces. El segundo método es más flexible.
C 11
El estándar ISO C 11 proporciona la clase std::thread en STL, por lo que el uso de subprocesos múltiples se vuelve muy fácil. #includelt; threadgt;usingnamespacestd; voidthreadFunc(){//Escribe el contenido del hilo aquí} intmain(){threadt(threadFunc); //Inicia el hilo t.join(); return0;} Uno usa Las aplicaciones que utilizan tecnología de subprocesos múltiples pueden utilizar mejor los recursos del sistema. Su principal ventaja es que aprovecha al máximo el tiempo de inactividad de la CPU y puede responder a los requisitos del usuario en el menor tiempo posible, lo que mejora en gran medida la eficiencia operativa general del proceso y mejora la flexibilidad de la aplicación. Más importante aún, dado que todos los subprocesos del mismo proceso comparten la misma memoria, no hay necesidad de un mecanismo especial de transferencia de datos, no es necesario crear un área de almacenamiento compartido o un archivo compartido, para que diferentes tareas puedan Problemas como operaciones coordinadas y las operaciones, la interacción de datos y la asignación de recursos son más fáciles de resolver.
Sincronización de subprocesos
En aplicaciones multiproceso, considere la sincronización de datos entre diferentes subprocesos y evite interbloqueos. Un punto muerto entre subprocesos se produce cuando dos o más subprocesos esperan entre sí para liberar recursos al mismo tiempo. Para evitar que se produzcan interbloqueos, la seguridad de los subprocesos debe lograrse mediante la sincronización. Visual Basic proporciona tres métodos para completar la sincronización de subprocesos. La palabra clave sincronizada está disponible en Java.
Sincronización de dominio de código
Utilice la clase Monitor para sincronizar todo el código o parte del segmento de código de métodos estáticos/instanciados.
Sincronización manual
Puedes crear tu propio mecanismo de sincronización utilizando diferentes clases de sincronización (como WaitHandle, Mutex, ReaderWriterLock, ManualResetEvent, AutoResetEvent e Interlocked, etc.). Este método de sincronización requiere que sincronice manualmente diferentes dominios y métodos. Este método de sincronización también se puede utilizar para sincronizar entre procesos y aliviar los interbloqueos causados por la espera de recursos compartidos.
Sincronización de contexto
Utilice SynchronizationAttribute para crear una sincronización automática y sencilla para objetos ContextBoundObject. Este método de sincronización solo se utiliza para la sincronización de métodos y campos instanciados. Todos los objetos en el mismo dominio de contexto comparten el mismo bloqueo.
Aunque los subprocesos múltiples pueden aportar beneficios a todos, también hay muchos problemas que deben resolverse. Por ejemplo, para recursos exclusivos del sistema, como unidades de disco, dado que los subprocesos pueden ejecutar cualquier segmento de código del proceso y la ejecución de los subprocesos se completa automáticamente mediante la programación del sistema, existe un cierto grado de incertidumbre, por lo que es posible que dos subprocesos aparecer simultáneamente Los errores de operación ocurren cuando se operan unidades de disco; por otro ejemplo, para una computadora en un sistema bancario, se puede usar un subproceso para actualizar su base de datos de usuario y otro subproceso puede usarse para leer la base de datos en respuesta a las necesidades. de depositantes. El hilo que lee la base de datos lee una base de datos incompletamente actualizada, porque es posible que solo una parte de los datos se haya actualizado durante la lectura. Hacer que los subprocesos que pertenecen al mismo proceso funcionen de manera coordinada se denomina sincronización de subprocesos. A continuación solo presentamos los cuatro métodos de sincronización de subprocesos más utilizados:
Sección crítica (sección crítica)
Evento (evento)
Mutex (mutex) p>
Semaphore
La sincronización de subprocesos se puede lograr con relativa facilidad a través de estas clases.
Definición de HT
Hyper-threading (HT) es una tecnología desarrollada por Intel y lanzada en 2002. Hyper-Threading en inglés es tecnología HT, su nombre completo es Hyper-Threading y su nombre chino es Hyper-Threading. La tecnología Hyper-Threading originalmente solo se usaba en procesadores Xeon y en ese momento se llamaba Super-Threading. Posteriormente, se aplicó sucesivamente en Pentium 4, generalizando la tecnología. El primer nombre en clave fue Jackson.
Características
A través de esta tecnología, Intel se convirtió en la primera empresa en proporcionar dos subprocesos lógicos en un procesador físico. Aunque el último Pentium D no admitía la tecnología Hyper-Threading, integraba dos núcleos físicos, por lo que aún veía dos hilos lógicos. El desarrollo futuro de Hyper-Threading es mejorar los subprocesos lógicos del procesador. Intel planea combinar el procesador de 8 núcleos con tecnología Hyper-Threading para convertirlo en un producto con 16 subprocesos lógicos.
Intel dijo que la tecnología Hyper-Threading permite al procesador (P4) aumentar el área del troquel en un 5 %, lo que puede conducir a una mejora del rendimiento del 15 al 30 %. Pero, de hecho, en algunos programas o programas que no están compilados para subprocesos múltiples, el hiperprocesamiento en realidad reducirá el rendimiento. Además, la tecnología Hyper-Threading también requiere la cooperación del sistema operativo, y es posible que los sistemas que generalmente admiten tecnología multiprocesador no puedan utilizar esta tecnología por completo. Por ejemplo, en Windows 2000, Intel no recomienda a los usuarios que utilicen Hyper-Threading en este sistema. Windows XP Home Edition, que originalmente no admitía múltiples núcleos, admite la tecnología Hyper-Threading.
AMDBuldozer “Bulldozer”
Según noticias relevantes, en la conferencia HotChips, AMD anunció que la arquitectura de procesador de próxima generación con nombre en código Bulldozer “Bulldozer” utilizará multinúcleo de un solo núcleo. -tecnología de subprocesos (tecnología multiproceso), similar a la famosa tecnología Hyper-Threading de Intel.
AMD no reveló más detalles sobre sus capacidades de subprocesos múltiples, solo dijo que el procesador Bulldozer se lanzará en 2011. y admite tecnología de subprocesos múltiples de un solo núcleo. Sin embargo, el enfoque de AMD es diferente del HT de Intel. Es más similar a la tecnología de subprocesos múltiples simultáneos (SimultaneousMulti-Threading) de Sun, que se expande de 1 núcleo físico a 4 subprocesos. "Bulldozer amplía la tecnología de subprocesos múltiples de un solo núcleo. La tecnología Threading y el Hyper-Threading de Intel utilizan métodos diferentes". PatConway, representante de AMD, también confirmó esto. Curiosamente, AMD también declaró anteriormente que no consideraría SMT u otras tecnologías de subprocesos múltiples. Por el momento y lo aplicaría ahora en los procesadores. Sin embargo, AMD también está de acuerdo en que el multihilo paso a paso es una característica necesaria para mejorar significativamente el rendimiento de los futuros productos de procesador.
Bulldozer es el próximo de AMD. Procesador de microarquitectura de nueva generación. De hecho, será el procesador de microarquitectura de próxima generación de AMD. El primer cambio importante en la arquitectura del procesador desde 2003. La nueva generación de procesadores proporcionará un rendimiento mucho mayor que los productos modernos y también se unirá al conjunto de instrucciones SSE5. .
La primera computadora de escritorio de la serie Bulldozer. El procesador tiene el nombre en código Orochi y tendrá más de 4 núcleos de procesador, más de 8 M de caché y admite memoria DDR3, basado en el proceso de 32 nm. Los procesadores de la versión de servidor tienen el nombre en código Valencia y. Interlagos, y estos dos procesadores tendrán 6, 8 y 12 núcleos de procesador.
AMD nunca ha utilizado multi-threading simultáneo (SMT), que es lo que Intel llama tecnología hyper-threading. Aunque dicha tecnología parecía no tener ningún uso práctico en la era P4, a partir de 2015, el entorno multiproceso cada vez más popular ha rejuvenecido Hyper-Threading.
Perspectivas de desarrollo
A partir de 2014, según el entorno de la aplicación, la tecnología Hyper-Threading puede acelerar significativamente algunas aplicaciones específicas entre 10 y 15 veces. Además del hyper-threading de Intel introducido en Nehalem, Atom, etc., tanto la serie Power de IBM como la serie T1/T2/Rock de Sun y otras arquitecturas de procesador aplican tecnología multithreading síncrona SMT similar, utilizando una pequeña cantidad de transistores para traer grandes Mejoras significativas en el rendimiento de subprocesos múltiples.
Un ingeniero de AMD confesó recientemente a los medios que la falta de soporte para la tecnología multihilo de un solo núcleo hace que el procesador Opteron parezca menos potente que el Xeon de gama baja de Intel. Se dice que los ejecutivos internos de AMD han admitido que no introducir dicha tecnología temprano fue un error en la selección de la tecnología.
Sin embargo, en una entrevista, el vicepresidente y director general de negocios de estaciones de trabajo con servidor de AMD, Patrick Patla, no reveló claramente el futuro de la tecnología de subprocesos múltiples de un solo núcleo, pero continuó reiterando la hoja de ruta anunciada de Opteron: " Si observa nuestra hoja de ruta y nuestro desempeño en el mercado de procesadores multiproceso, creemos que tener un núcleo completo por subproceso es la mejor opción en este momento, y lanzaremos un procesador de 12 núcleos en 2010 y 2011.16 núcleos Creemos que podremos soportar completamente entornos de 48 o 64 subprocesos en los próximos años, veamos qué nos traerá 2012 y 2013."
Desde 2011 son 16 núcleos, entonces parece. No es tan normal saltar directamente a 48 o incluso 64 núcleos de 2012 a 2013. Además, Patrick Patla habla de "núcleo" en la primera oración y luego habla de "hilo" al final, lo que parece implicar que AMD puede adoptar tecnología multihilo de un solo núcleo.