Espacios de nombres
Variantes
Acciones

Implementaciones independientes y albergadas

De cppreference.com
< cpp

Existen dos tipos de implementaciones definidas por el estándar de C++: albergadas e independientes. Para las implementaciones albergadas el conjunto de archivos de encabezado requerido por el estándar de C++ es mucho más extenso que para las independientes. En una implementación independiente la ejecución puede suceder sin un sistema operativo.

Contenido

Requerimientos de ejecuciones multihilos y carreras de datos

independientes albergadas
Bajo una implementación independiente, se define por la implementación si un programa puede tener más de un hilo de ejecución. Bajo una implementación albergada, un programa de C++ puede tener más de un hilo ejecutando concurrentemente.
(desde C++11)

[editar] Requerimientos de la función main

independientes albergadas
En una implementación independiente, se define por la implementación si se requiere que un programa defina una función main. Inicio y fin están definidos por la implementación; el inicio contiene la ejecución de los constructores para objetos de ámbito de espacio de nombres con duración de almacenamiento estática; el fin contiene la ejecución de los destructores para objetos con duración de almacenamiento estática. En una implementación albergada, un programa debe contener una función global llamada main. La ejecución de un programa inicia hilo de ejecución principal en el que se invoca a la función main, y en la que las variables con duración de almacenamiento estática pueden ser inicializadas y destruidas.

[editar] Requerimientos de los archivos de encabezado estándares

Una implementación independiente tiene un conjunto de archivos de encabezado definido por la implementación. Este conjunto incluye al menos los archivos de encabezado de la tabla siguiente:

Archivos de encabezado requeridos para una implementación independiente
Tipos <cstddef>
Propiedades de la implementación <limits>
<cfloat> <climits> (desde C++11)
<version> (desde C++20)
Tipos enteros <cstdint> (desde C++11)
Inicio y fin <cstdlib> (partial)[1]
Administración de memoria dinámica <new>
Identificación de tipo <typeinfo>
Ubicación de fuente <source_location> (desde C++20)
Control de excepciones <exception>
Lista de inicializadores <initializer_list> (desde C++11)
Comparaciones <compare> (desde C++20)
Soporte de corutinas <coroutine> (desde C++20)
Otro soporte de tiempo de ejecución <cstdarg>
Conceptos fundamentales de la biblioteca <concepts> (desde C++20)
Rasgos de tipo <type_traits> (desde C++11)
Manipulación de bits <bit> (desde C++20)
Tipos atómicos <atomic> (desde C++11)[2]
<ciso646> (desde C++11)(hasta C++20)
Archivos de encabezado obsoletos/en desuso <cstdalign> <cstdbool> (desde C++11)(hasta C++20)
  1. La versión suministrada del archivo de encabezado <cstdlib> deberá declarar al menos las funciones std::abort, std::atexit, std::exit, std::at_quick_exit y std::quick_exit (desde C++11).
  2. Soporte para tipos atómicos enteros siempre libre de cerrojos (lock-free) y la presencia del alias de tipo std::atomic_signed_lock_free y std::atomic_unsigned_lock_free están definidos por la implementación en una implementación independiente. (desde C++20)

[editar] Referencias

  • El estándar C++17 (ISO/IEC 14882:2017):
  • 4.1 Conformidad de la implementación (p: 5)
  • 4.7 Ejecuciones multihilos y carreras de datos (p: 15)
  • 6.6.1 Función main (p: 66)
  • 20.5.1.3 Implementaciones independientes (p: 458)
  • El estándar C++14 (ISO/IEC 14882:2014):
  • 1.4 Conformidad de la implementación (p: 5)
  • 1.10 Ejecuciones multihilos y carreras de datos (p: 11)
  • 3.6.1 Función main (p: 62)
  • 17.6.1.3 Implementaciones independientes (p: 441)
  • El estándar C++11 (ISO/IEC 14882:2011):
  • 1.4 Conformidad de la implementación (p: 5)
  • 1.10 Ejecuciones multihilos y carreras de datos (p: 11)
  • 3.6.1 Función main (p: 58)
  • 17.6.1.3 Implementaciones independientes (p: 408)
  • El estándar C++03 (ISO/IEC 14882:2003):
  • 1.4 Conformidad de la implementación (p: 3)
  • 3.6.1 Función main (p: 43)
  • 17.4.1.3 Implementaciones independientes (p: 326)

[editar] Véase también

Documentación de C de Conformidad