Importancia del indicador -pthread al compilar
En varios proyectos de C y C++ de subprocesos múltiples, he visto el -pthread
indicador aplicado tanto a la etapa de compilación como a la de vinculación, mientras que otros no lo usan en absoluto y simplemente pasan-lpthread
a la etapa de vinculación.
¿Existe algún peligro al no compilar y vincular con la -pthread
bandera, es decir, qué -pthread
hace realmente? Estoy principalmente interesado en las plataformas Linux.
Intentar:
gcc -dumpspecs | grep pthread
y busca cualquier cosa que comience con%{pthread:
.
En mi computadora, esto hace que los archivos se compilen -D_REENTRANT
y se vinculen con -lpthread
. En otras plataformas, esto podría diferir. Usar-pthread
para la mayor portabilidad.
El uso de _REENTRANT
, en GNU libc, cambia la forma en que funcionan algunos encabezados de libc. Como ejemplo específico, llama errno
a una función que devuelve una ubicación local del subproceso.
De man gcc
:
-pthread Agrega soporte para subprocesos múltiples con la biblioteca pthreads. Esta opción establece indicadores tanto para el preprocesador como para el vinculador.