c ++ 11 concurrencia y multihilo (conferencia)


    R: conceptos básicos de concurrencia, proceso


    , los requisitos del proceso de multiproceso concurrentes deben dominar;
    (1.1) concurrentes
    dos o más tareas (eventos independientes) se producen simultáneamente (BE): un programa de ejecución simultánea de múltiples tareas independientes
    antes de que el ordenador de la CPU de un solo núcleo (unidad central de procesamiento) una tiempo sólo se puede realizar una tarea: programación por el sistema operativo, múltiples veces por segundo llamada conmutación de tareas.
    ilusión concurrente (no siendo cierto concurrente); este interruptor (cambio de contexto) es un exceso de tiempo, tales como una variedad de sistema operativo que desea guardar el estado cuando se cambia.
    El calendario de aplicación y otra información, llevará su tiempo, un tiempo van a cambiar de nuevo a la necesidad de responder a dicha información.

    desarrollo de hardware, ha habido un equipo con varios: para servidores y computación de alto rendimiento.
    Escritorio: multi-núcleo (múltiple) de la CPU en un solo chip: de doble núcleo, cuatro núcleos, ocho núcleos ...
    entonces realmente ser capaz de realizar múltiples tareas simultáneas (hardware);

    La razón para el uso de concurrencia: Lo más importante es que al mismo tiempo puede hacer más para mejorar el rendimiento;

    (1.2) ejecutable
    archivo en el disco, las siguientes ventanas, una extensión .exe.
    Bajo Linux ls -la tienen permisos de ejecución rwxrwxrwx.

    (1.3) Proceso: El programa ejecutable que se puede ejecutar
    en Windows, haga doble clic en un programa ejecutable para funcionar
    bajo Linux ./ nombre ./a;
    un programa ejecutable en funcionamiento, llamada la creación de un proceso,
    el proceso se está ejecutando hasta programa ejecutable;

    (1.4) de rosca:
    A) cada proceso (para poner en práctica un programa ejecutable), hay un hilo principal, el hilo principal es único, es decir, un proceso puede tener sólo un hilo principal.
    b) Cuando se ejecuta un programa ejecutable, lo que resulta en un proceso, el hilo principal con el proceso de puesta en marcha en silencio.

    De hecho, cuando se ejecuta el programa, de hecho, es el hilo conductor del proceso para ejecutar el código (llamada) la función principal de,
    hilos y procesos van de la mano, me tienes, te tengo a ti.
    Tema: se utiliza para ejecutar el código.
    Esta cosa puede ser entendido como un hilo, una ruta de ejecución del código.
    Además del hilo principal, podemos crear otros hilos a través de su propio código de escritura, otros hilos que toman el otro camino. fines completamente diferentes
    cada uno crea un nuevo hilo, puedo al mismo tiempo, hacer más cosas de una manera diferente (y más que seguir una ruta de ejecución de código diferente)


    Multithreading (concurrente)
    hilo no es posible, cada necesidad hilo para comprar un espacio de pila separada, el cambio entre hilos necesario guardar una gran cantidad de estados intermedios;
    consumir el momento actual pertenece al programa que se ejecuta;

    Resumió el hilo:
    Un hilo se utiliza para ejecutar el código;
    a ser entendido como una ruta de ejecución de código hilo de esto, un nuevo hilo es representativa de un nuevo camino.
    Un proceso de forma automática incluye un hilo principal, el hilo principal con el proceso de silencio en funcionamiento, podemos crear otros hilos (hilo no principal) compilado por el código
    , pero el número no está creación de más de 200 y 300 recomienda, como el número de caso, tenemos que optimizar la situación real.
    Debido a que el hilo principal se activa de forma automática, por lo que un proceso en al menos un procesos e hilos de rosca (el hilo principal) sentimiento es el estado civil y su hijo
    decirlo claramente: un programa de multiproceso puede hacer más cosas al mismo tiempo, la eficiencia operativa es relativamente alto, pero al final lo alto, no es una cosa fácil de evaluar y cuantificar.
    Todavía tenemos que ser ajustado y optimizado en proyectos reales;
    (1,5) experiencia de aprendizaje
    el desarrollo de programa multi-roscado: programador senior es una habilidad esencial.
    c ++ hilo implicará número relativamente grande de nuevos conceptos, particularmente crítico para altos salarios, no ansioso.


    II: aplicación simultánea


    Dos o más tareas (eventos independientes) se producen simultáneamente (BE)
    medios para lograr la concurrencia:
    A) Nos concurrencia a través de múltiples procesos.
    b) En un proceso separado, puedo crear varios subprocesos para lograr la concurrencia; escribir su propio código para crear otros hilos que no sean el hilo principal;
    (2.1) proceso más complicado
    después de la palabra tras el inicio es un proceso, es decir, se inicia el navegador un proceso de
    servidor de cuentas, la comunicación entre el servidor de la lógica del juego, el proceso del servidor.
    La comunicación entre procesos (en el mismo equipo: tuberías, archivos, colas de mensajes, memoria compartida);
                                 equipos diferentes: la tecnología de comunicación zócalo;

    (2.2) multihilo: un único proceso para crear varios subprocesos.
    Tema: Se siente como un proceso ligero, cada hilo tiene su propia trayectoria operativa independiente, sino un proceso todas las discusiones compartir espacio de direcciones (memoria compartida);
    variables globales, los punteros, las referencias se pueden pasar en el hilo, por lo : el uso de múltiples hilos mucho menor que el costo de múltiples procesos.
    Memoria compartida trae nuevos problemas, problemas de consistencia de datos: hilo A, el hilo B;

    proceso más complicado y multi-hilo, aunque se pueden mezclar, pero el profesor sugirió dar prioridad a la tecnología multi-threading, en lugar de múltiples procesos;

    En este artículo se trata principalmente de multi-hilo.

    (2.3) Resumen:
    y procesos que el hilo tiene las siguientes ventajas:
    (1) el hilo se inicie más rápido, más ligero;
    (2) recursos de costo menor del sistema, más rápido de ejecución, este medio de comunicación, tales como la memoria compartida de casi cualquier otro medio de comunicación.
    Deficiencia
    (a) el uso de un cierto grado de dificultad, necesitan manejo cuidadoso problemas de consistencia de datos.

    Tres: ++ 11 biblioteca rosca estándar c


    ventanas: CreateThread (), _beginthread ( ), _ beginthreadex () crea un subproceso de
    Linux: pthread_create () crea un hilo de
    sección crítica, exclusión mutua;
    código multiproceso anterior no puede ser multiplataforma;
    POSIX la rosca (la pthread); multiplataforma, sino que hay que hacer alguna configuración, por lo que los utilizan no es tan fácil.

    De c ++ 11 nuevas normas, lenguaje C ++ sí añade soporte para múltiples hilos, lo que significa que la portabilidad (multiplataforma), lo que reduce en gran medida la carga de trabajo de los desarrolladores.


  

Publicados 101 artículos originales · ganado elogios 73 · vistas 120 000 +

Supongo que te gusta

Origin blog.csdn.net/usstmiracle/article/details/104130442
Recomendado
Clasificación